1

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 の正確なレベルでクローズインする 2 番目の行のコメントを外すと、このコードfooは , found, を出力しますbar

ここでの私の質問は次のとおりです。最初の反復でスクリプトが出力する場合、fooなぜそうでa[i].innerText == "foo"はないのtrueですか? ああ、その空の行はどこから来ているのですか?

4

2 に答える 2

3

myClass の内部には 2 つの div があるため、javascript はそれらを行 "\n" として認識し、したがって "foo" は "foo\n" と等しくありません。

しかし、次のようにコードを変更すると:

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

次に、コンソールで見つかったログを確認できます。 http://jsfiddle.net/3149ha75/5/

于 2014-08-17T08:32:59.410 に答える