getElementsByClassName recursion

getElementsByClassName recursion

本文关键字:recursion getElementsByClassName      更新时间:2023-09-26

我一直在尝试实现一个行为与DOM方法完全相似的getElementsByClassName函数。通过大量的研究,我得出了以下结论,但似乎返回的内容与标准方法返回的内容不匹配。最后一个console.log语句似乎打印了我要查找的内容,但不知何故,返回的内容有所不同。如有任何建议或帮助,我们将不胜感激!

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;
};