作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道 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");
}
}
按原样运行此代码,输出 foo
和空行,然后是 bar
。
如果我注释掉脚本的第一行,并取消注释第二行,然后关闭包含文本的 div 的确切级别,则此代码输出 foo
, 找到了
,bar
。
我的问题是:如果在第一次迭代中脚本输出 foo
,为什么 a[i].innerText == "foo"
不是 真的
?哦,那个空行是从哪里来的?
最佳答案
由于 myClass 内部有 2 个 div,javascript 将它们视为一行“\n”,因此“foo”不等于“foo\n”
但是如果我们这样修改代码:
if (a[i].innerText == "foo\n"){
console.log("found");
}
然后就可以在控制台看到found log了。 http://jsfiddle.net/3149ha75/5/
关于Javascript innerText 细微差别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25347501/
我是一名优秀的程序员,十分优秀!