querySelectorAll doesn't return live DOM elements.ただし、私が何かを紛失していない限り、これはすべてのプロパティでは当てはまりません。なぜquerySelectorAllはライブDOM要素を返すのですか?
質問:.innerHTML
プロパティでquerySelectorAll
をテストしました。ドキュメントの作成時に存在した番号5を返す代わりに、Javascriptで挿入されたFIVEという単語が返されました。どうしてこれなの?
対照として、私は.length
特性を有するquerySelectorAll
を試験し、予想通りに番号10を返した。
私はquerySelectorAll
についての重要な概念を見逃しているに違いありませんが、私はそれが何であるか分かりません。私のコードは以下の通りです。本当にありがとう!
var largeContainer = document.querySelectorAll(".box_1");
\t \t
document.getElementsByClassName("box_1")[9].className = "box_2"; \t \t \t \t
console.log(largeContainer.length);
\t \t
document.getElementsByClassName("box_1")[5].innerHTML = "FIVE";
console.log(largeContainer[5].innerHTML);
.box_1 {
height: 100px;
margin: 0 0 16px 0;
font-size: 2rem;
color: white;
background-color: red;
}
.box_2 {
height: 100px;
margin: 0 0 16px 0;
font-size: 2rem;
color: white;
background-color: blue;
}
<div class="box_1">0</div>
<div class="box_1">1</div>
<div class="box_1">2</div>
<div class="box_1">3</div>
<div class="box_1">4</div>
<div class="box_1">5</div>
<div class="box_1">6</div>
<div class="box_1">7</div>
<div class="box_1">8</div>
<div class="box_1">9</div>
違いは要素とその内容の違いです –
これは、変数 'largeContainer'に、変更をクラスに適用する前に収集する要素のコレクションが含まれているためです。 '.querySelectorAll()'を実行する前に 'class'の名前を変更した場合、結果は期待通りになるはずです。 – NewToJS