安全なことは、document.getElementsById('*');
によって作成されたNodeListが実際のオブジェクトであるということです。いくつかの要素は、JSエンジンがそれをループするときに動的に追加または削除されます。純粋なJSでDOM全体をループする最も速く、安全で正しい方法は何ですか?
DOM全体(これはgreasemonkeyスクリプトにありますので、通常のウェブ用ではありませんが、それもそこに当てはまると思います)にループすることです。その変更によると、CSS。
このプロセスには時間がかかっています。ウェブサイトには複数のスクリプト(画像やニュースなどの変更)が実行されているため、DOMノードをいつでも追加したり削除したりすることができます。処理されます。
と高速で、私が意味する、それは再帰的にそれを行うには良いです:
function traverseDOM(node,f) {
if (node.nodeType !== 1) return;
f.apply(node);
for (var i = 0; i < node.childNodes.length; i++) {
traverseDOM(node.childNodes[i],f);
}
}
(これはnodeTypeプロパティをチェックするには時間を無駄にします) またはfor
ループによって:
nodes = document.getElementsByTagName('*');
for (var i=0; i<nodes.length; i++) {
//do my stuff
}
(しかし、この最後にノードリストの先端に遭遇する問題があります)