Zastanawiam się nad tym tematem od dłuższego czasu. Metody o których mowa, są następujące:Jak niezawodny jest "porządek" w zapytaniach NodeLists
getElementsByTagName
getElementsByClassName
getElementsByName
querySelectorAll
O ile mi wiadomo, te metody DOM są jedynymi metodami, które są w stanie powrócić zamrożone lub żyć NodeLists
. W przypadku niektórych z tych metod zamówienie jest zdefiniowane przez W3C spec. Na przykład, http://www.w3.org zapisuje następujące informacje dotyczące NodeLists
zwrócony przez querySelectorAll
The querySelectorAll() metod dotyczących dokumentu interfejsy DocumentFragment i element musi powrócić na liście węzłów zawierający wszystkie odpowiadających węzłów Element ciągu poddrzewach Spośród węzeł kontekstowy, w porządku dokumentu . Jeśli nie ma pasujących węzłów, metoda musi zwrócić pustą listę NodeList.
Jednak nie mogę znaleźć podobne jasne specyfikacji dla innych metod, o których wspomniałem. Moje pytania są tu:
- istnieje określona kolejność (najprawdopodobniej zamówienie dokument) dla wyników?
- jak niezawodne i zaimplementowane w przeglądarce są te specyfikacje?
Aby mieć absolutną jasne:
<div>this</div>
<div>is</div>
<div>a demo</div>
// is this always guaranteed to be "<div>is</div>"
document.querySelectorAll('div')[1]
+1, bardzo interesujące pytanie. – saji89
Niezależnie od tego, czy/jak jest zdefiniowane w specyfikacji, wyobraź sobie, że nie ma gwarantowanej kolejności. Indeksowane odniesienia nie miałyby znaczenia, zostałyby porzucone dawno temu, a każdy rekursywnie przechodziłby przez wszystkie 'childNodes' w DOM, gdy potrzebna jest gwarancja indeksowania. Nie widziałem nic, co wskazywałoby na jakąkolwiek zmianę WRT w kolejności wyników. –
... odmiana *, która * zwraca elementy, to inna historia. –