我正在尝试使用DOMclassList.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);

最佳答案

firstChildnextSibling将包含没有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/

10-13 02:41