我正在尝试使用DOM
在classList.contains
元素中搜索特定类,但出现此错误:
“ TypeError:无法读取未定义的属性'包含'。”
尝试使用.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);
最佳答案
firstChild
和nextSibling
将包含没有classList
的文本节点
您想坚持使用元素,因此在for循环中说:
for (var node = parent.firstChild; node; node = node.nextSibling) {
if (node.nodeType == 1)
comb(node, callback);
}
}
或者,如Omar在评论中指出的:
for (var node = parent.firstElementChild; node; node = node.nextElementSibling) {
comb(node, callback);
}
关于javascript - 无法搜索classList .with包含,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29661079/