私はかなり長い間このトピックについて疑問に思っています。問題の方法は次のとおりです。
getElementsByTagName
getElementsByClassName
getElementsByName
querySelectorAll
私の知る限り、これらのDOMメソッドは、フリーズまたはライブを返すことができる唯一のメソッドNodeLists
です。これらのメソッドの一部では、順序はW3C仕様で定義されています。たとえば、http://www.w3.orgはNodeLists
、querySelectorAll
Document、DocumentFragment、およびElementインターフェイスのquerySelectorAll()メソッドは、コンテキストノードのサブツリー内の一致するすべてのElementノードを含むNodeListをドキュメント順に返す必要があります。一致するノードがない場合、メソッドは空のNodeListを返す必要があります。
しかし、私が言及した他の方法について、同様の明確な仕様を見つけることができませんでした。ここでの私の質問は次のとおりです。
- 結果の定義された順序(おそらくドキュメントの順序)はありますか?
- これらの仕様は、どの程度信頼性が高く、クロスブラウザで実装されていますか?
完全に明確にするために:
<div>this</div>
<div>is</div>
<div>a demo</div>
// is this always guaranteed to be "<div>is</div>"
document.querySelectorAll('div')[1]