我创建了一个简单的函数来执行类似于getElementsByClassName()的任务。它应该遍历DOM中的每个节点,并将具有匹配类的节点推送到一个数组中。我试图使用类似Crockford的walk_the_DOM方法,但是,我的工作不正常。该函数检索第一个DOM级别上的节点,但不会更深入。有人能给我一个提示,指出哪里出了问题?下面的代码:DOM行走功能不起作用
var getNodesWithClassname = function(classname) {
var a = document.body;
var ar = [];
var getNodes = function(obj, classname) {
if (obj.hasChildNodes()) {
var child = obj.firstElementChild;
while (child) {
if (child.className === classname) {
ar.push(child)
}
child = child.nextElementSibling;
}
}
}
getNodes(a, classname);
return ar;
};
它是如何*不*工作? – Joseph
任何地方都没有递归,这对于你的代码只能遍历一个层次起到很大的作用。 – Brian