我想知道innerText属性。考虑以下标记:

的HTML

<div class="myClass">
    <div>
         <div>foo</div>
   </div>
</div>
<div class="myClass">
    <div>
         <div>bar</div>
    </div>
</div>


然后,运行以下代码:

JS

var a = document.querySelectorAll('div.myClass');
//var a = document.querySelectorAll('div.myClass div div');
for (var i=0; i<a.length; i++){
    console.log(a[i].innerText);
    if (a[i].innerText == "foo"){
        console.log("found");
    }
}


FIDDLE HERE

按原样运行此代码,输出foo,然后空行,然后输出bar

如果我注释掉脚本的第一行,然后取消注释第二行,然后在包含文本的div的精确级别上进行关闭,则此代码输出foofoundbar

我的问题是:如果脚本在第一次迭代中输出foo,为什么a[i].innerText == "foo"不是true?哦,那条空线从哪里来?

最佳答案

由于myClass本身具有2 div,因此javascript将它们视为“ \ n”行,因此“ foo”不等于“ foo \ n”

但是,如果我们像这样更改代码:

 if (a[i].innerText == "foo\n"){
        console.log("found");
 }


然后,您可以在控制台中看到找到的日志。
http://jsfiddle.net/3149ha75/5/

关于javascript - Javascript innerText细微差别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25347501/

10-11 22:04
查看更多