144

プレーンな js を使用してラベル要素の内部テキストを変更していますが、どのような理由で innerHTML、nodeValue、または textContent を使用すべきかわかりませんでした。新しいノードを作成したり、HTML 要素などを変更したりする必要はありません。テキストを置き換えるだけです。コードの例を次に示します。

var myLabel = document.getElementById("#someLabel");
myLabel.innerHTML = "Some new label text!"; // this works

myLabel.firstChild.nodeValue = "Some new label text!"; // this also works.

myLabel.textContent = "Some new label text!"; // this also works.

jQuery ソースを調べたところ、nodeValue は 1 回だけ使用されていますが、innerHTML と textContent は数回使用されています。次に、firstChild.nodeValue が大幅に高速であることを示すこの jsperf テストを見つけました。少なくとも私はそう解釈しています。

firstChild.nodeValue がはるかに高速である場合、問題は何ですか? 広く支持されていませんか?他の問題はありますか?

4

6 に答える 6

2

[注: この投稿は、人々に何をすべきかを伝えるというよりも、誰かを助けるかもしれない特定のデータを共有することに関するものです]

誰かが今日最速のものを疑問に思っている場合: https://jsperf.com/set-innertext-vs-innerhtml-vs-textcontent & https://jsperf.com/get-innertext-vs-innerhtml-vs-textcontent ( 2 番目のテストでは、スパンのコンテンツはプレーン テキストであり、そのコンテンツによって結果が変わる可能性があります)

.innerHtml純粋な速度の面で素晴らしい勝者のようです!

(注: ここでは速度について話しているだけです。使用する基準を選択する前に、他の基準を探すことをお勧めします!)

于 2019-02-28T13:08:44.373 に答える