getElementsByClassName 递归
getElementsByClassName recursion
我一直在尝试实现一个 getElementsByClassName 函数,它的行为与 DOM 方法完全一样。通过大量研究,我得出了以下结论,但似乎 returned 与标准方法 return 不匹配。最后的 console.log
语句似乎打印了我正在寻找的内容,但不知何故 returned 的内容有所不同。任何建议或帮助将不胜感激!
var getElementsByClassName = function(className){
var results= [];
var bod = document.body;
var iterateBod = function(bod){
if(bod.classList && bod.classList.contains(className)){
results.push(bod);
console.log(results)
}else{
for(var i = 0; i < bod.childNodes.length; i++){
iterateBod(bod.childNodes[i]);
}
}
};
iterateBod(bod);
console.log(results);
return results;
};
更改递归内的条件
var getElementsByClassName = function(className){
var results= [];
var bod = document.body;
var iterateBod = function(bod){
if(bod.classList && bod.classList.contains(className))
{
results.push(bod);
console.log(results);
if(bod.childNodes)
{
for(var i = 0; i < bod.childNodes.length; i++)
{
iterateBod(bod.childNodes[i]);
}
}
}
};
iterateBod(bod);
console.log(results);
return results;
};
我一直在尝试实现一个 getElementsByClassName 函数,它的行为与 DOM 方法完全一样。通过大量研究,我得出了以下结论,但似乎 returned 与标准方法 return 不匹配。最后的 console.log
语句似乎打印了我正在寻找的内容,但不知何故 returned 的内容有所不同。任何建议或帮助将不胜感激!
var getElementsByClassName = function(className){
var results= [];
var bod = document.body;
var iterateBod = function(bod){
if(bod.classList && bod.classList.contains(className)){
results.push(bod);
console.log(results)
}else{
for(var i = 0; i < bod.childNodes.length; i++){
iterateBod(bod.childNodes[i]);
}
}
};
iterateBod(bod);
console.log(results);
return results;
};
更改递归内的条件
var getElementsByClassName = function(className){
var results= [];
var bod = document.body;
var iterateBod = function(bod){
if(bod.classList && bod.classList.contains(className))
{
results.push(bod);
console.log(results);
if(bod.childNodes)
{
for(var i = 0; i < bod.childNodes.length; i++)
{
iterateBod(bod.childNodes[i]);
}
}
}
};
iterateBod(bod);
console.log(results);
return results;
};