gpt4 book ai didi

javascript - 无法搜索 classList .with contains

转载 作者:行者123 更新时间:2023-12-03 10:20:24 25 4
gpt4 key购买 nike

我尝试使用 classList.contains 搜索特定类的 DOM 元素,但出现此错误:

"TypeError: Cannot read property 'contains' of undefined."

尝试使用 .indexOf 进行搜索时,我遇到了同样的错误。让我困惑的部分是,当我 console.log this.classList 时,它正确记录了 classList 对象。我在使用 contains 时哪里出错了?注意:这是使用递归进行练习的 getElementsByClassName 的重新实现。

var allNodes = document.body;

function comb(parent, callback) {
if (parent.hasChildNodes()) {
for (var node = parent.firstChild; node; node = node.nextSibling) {
comb(node, callback);
}
}
callback.call(parent);
}

function check() {
var passed = this.classList.contains("right");
if (passed) {
return this.nodeValue;
}
}

comb(allNodes, check);

最佳答案

firstChildnextSibling 将包含没有 classList 的文本节点

你想坚持元素,所以在 for 循环中,说:

for (var node = parent.firstChild; node; node = node.nextSibling) {
if (node.nodeType == 1)
comb(node, callback);
}
}

或者,正如奥马尔在评论中指出的:

for (var node = parent.firstElementChild; node; node = node.nextElementSibling) {
comb(node, callback);
}

关于javascript - 无法搜索 classList .with contains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29661079/

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