我在 getElementsByClassName 中创建了一个函数,用于测试当前节点以检查它是否与 className 匹配,然后递归地测试当前节点的子节点。
对我来说,这在逻辑上是有意义的,但我不确定为什么结果不会产生与 getElementsByClassName 相同的结果。我尝试实现一个 for 循环来检查当前级别中的每个节点,但这似乎也不起作用。我需要在第一个 if 语句中调整哪些内容才能使此代码正常工作?
function getElementsByClassName (className) {
var nodeList = [];
function test(node) {
if (node.classList === className) {
nodeList.push(node.classList[count]);
}
for (var index = 0; index < node.childNodes.length; index++) {
test(node.childNodes[index]);
}
}
test(document.body)
return nodeList;
};
最佳答案
在检查 className 时,您正在做一些小事情。
if (node.classList && node.classList.contains(className)) {
nodeList.push(node);
}
关于javascript - 使用递归实现 getElementsByClassName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29013969/