【问题标题】:DOM returned value for childNodechildNode 的 DOM 返回值
【发布时间】:2018-12-10 06:18:55
【问题描述】:

这是 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?');
 }
}

我试图匹配S.childnode 值当我控制台记录ul[i].childNodes[0] 时,我可以看到返回值为“S”,但我只是不明白为什么if 条件是不满足。我错过了什么?我也尝试了firstChild 属性,但仍然不能满足条件。

【问题讨论】:

    标签: javascript dom


    【解决方案1】:

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

    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>

    【讨论】:

    • 哇,这太棒了!对我来说是全新的。如果我在 DOM 中以nodeproperty/value 为目标,我将来如何知道。有什么推荐阅读吗?再次感谢!
    • 好吧,你可以使用typeof,虽然typeof ul[i].childNodes[0] 会给你object,但我想你会知道它不是字符串。还有instanceoful[i].childNodes[0] instanceof Node 将评估为真。还有像 mozilla 这样的文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多