首页 > 解决方案 > childNode 的 DOM 返回值

问题描述

这是HTML:

<ul class="drum">
 <li>A<span>span text A</span></li>
 <li>S<span>span text S</span></li>
 <li>D<span>span text D</span></li>
</ul>

这是JS:

let ul = document.querySelectorAll('.drum li');
let ulLen = ul.length;
let arr = [];  
for(var i=0; i<ulLen; i++) {
 if(ul[i].childNodes[0] === '\"S\"') {
  console.log('why is this not returning?');
 }
}

我试图匹配当我 console.log 的childnode值时,我可以看到返回值为“S”,但我只是不明白为什么不满足条件。我错过了什么?我也试过这个属性,但仍然不能满足条件。 S.ul[i].childNodes[0]iffirstChild

标签: javascriptdom

解决方案


您正在将节点与字符串进行比较,您必须获取节点的文本内容然后进行比较。另外,删除双引号。

let ul = document.querySelectorAll('.drum li');
let ulLen = ul.length;
let arr = [];  
for(var i=0; i<ulLen; i++) {
 if(ul[i].childNodes[0].textContent === 'S') {
  console.log('why is this not returning?');
 }
}
<ul class="drum">
 <li>A<span>span text A</span></li>
 <li>S<span>span text S</span></li>
 <li>D<span>span text D</span></li>
</ul>


推荐阅读