Tôi tự hỏi về chủ đề này trong một thời gian. Các phương pháp trong câu hỏi là những điều sau đây:Làm thế nào đáng tin cậy là "đặt hàng" trong truy vấn NodeLists
getElementsByTagName
getElementsByClassName
getElementsByName
querySelectorAll
Theo như tôi biết, những phương pháp DOM là phương pháp duy nhất có thể trả lại được cố định hoặc hiển thị trực tiếp NodeLists
. Đối với một số phương pháp, thứ tự được xác định bởi Thông số W3C. Ví dụ, http://www.w3.org viết sau đây cho NodeLists
trả về bởi querySelectorAll
Các querySelectorAll() phương pháp trên tài liệu, giao diện DocumentFragment, và Yếu tố phải trả về một NodeList chứa tất cả các phù hợp với các nút phần tử trong subtrees của nút ngữ cảnh, trong đơn đặt hàng tài liệu. Nếu không có nút phù hợp, phương thức phải trả lại một NodeList trống.
Tuy nhiên, tôi không thể tìm thấy thông số rõ ràng tương tự cho các phương pháp khác mà tôi đã đề cập. Câu hỏi của tôi ở đây là:
- có một thứ tự xác định (thứ tự tài liệu có khả năng nhất) cho kết quả?
- mức độ đáng tin cậy và trình duyệt chéo được triển khai là các thông số kỹ thuật?
Để trở thành tuyệt đối rõ ràng:
<div>this</div>
<div>is</div>
<div>a demo</div>
// is this always guaranteed to be "<div>is</div>"
document.querySelectorAll('div')[1]
+1, câu hỏi rất thú vị. – saji89
Không phân biệt nếu/nó được xác định như thế nào trong spec, hãy tưởng tượng nếu không có lệnh bảo đảm nào. Các tham chiếu được lập chỉ mục sẽ không có ý nghĩa, sẽ bị hủy bỏ từ lâu rồi, và mọi người sẽ đệ quy đi qua tất cả 'childNodes' trong DOM bất cứ khi nào cần đảm bảo chỉ mục. Tôi đã thấy không có gì để chỉ ra để chỉ ra bất kỳ biến thể WRT thứ tự của kết quả. –
... biến thể trong * mà * các phần tử được trả lại là một câu chuyện khác. –