gpt4 book ai didi

javascript - 从头开始使用递归 getElementsByClassName

转载 作者:行者123 更新时间:2023-12-01 01:06:57 24 4
gpt4 key购买 nike

我的代码不起作用,我不知道为什么。

var getElementsByClassName = function(className){
let result = [];
let child = document.body.childNodes;
function nodeRecusion(node) {
for (let i = 0; i < node.length; i++) {
let current = node[i];
if (current.classList.contains(className)) {
result.push(node[i]);
}
if (current.childNodes.length) {
nodeRecusion(current);
}
}
}
nodeRecusion(child);
return result;
};

我收到的错误是“无法读取未定义的属性.contains”。我不明白这个问题。是没有正确接收子项还是我尝试递归调用它的方式有问题?

最佳答案

classList属性可用于 Element类而不是 Node界面。

您可以使用document.body.children来代替。

var getElementsByClassName = function(className) {
let result = [];
let child = document.body.children;

function nodeRecusion(node) {
for (let i = 0; i < node.length; i++) {
let current = node[i];
if (current.classList.contains(className)) {
result.push(node[i]);
}
if (current.children.length) {
nodeRecusion(current);
}
}
}

nodeRecusion(child);
return result;
};

console.log(getElementsByClassName('ele'));
<p class='ele'></p>
<span class='ele'></span>
<span class='stack'></span>

关于javascript - 从头开始使用递归 getElementsByClassName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com