HTMLCollection
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
HTMLCollection là một giao diện đại diện cho một tập hợp chung các phần tử (một đối tượng có dạng giống mảng như arguments) theo thứ tự trong tài liệu, và cung cấp các phương thức cùng thuộc tính để chọn phần tử từ danh sách.
HTMLCollection trong HTML DOM là một tập hợp động; nó sẽ tự động được cập nhật khi tài liệu nền thay đổi. Vì vậy, nên tạo một bản sao của nó, chẳng hạn bằng Array.from, trước khi lặp qua nếu bạn đang thêm, di chuyển hoặc xóa các nút.
Giao diện này được gọi là HTMLCollection vì lý do lịch sử, bởi trước DOM hiện đại thì các tập hợp triển khai giao diện này chỉ có thể chứa các phần tử HTML.
Giao diện này là một nỗ lực tạo ra một danh sách không thể sửa đổi và chỉ còn được hỗ trợ để không làm hỏng các đoạn mã đã sử dụng nó. Các API hiện đại biểu diễn cấu trúc danh sách bằng những kiểu dựa trên mảng JavaScript, nhờ đó cung cấp nhiều phương thức của mảng, đồng thời áp đặt thêm ngữ nghĩa khi sử dụng chúng (chẳng hạn như làm cho các phần tử của nó chỉ đọc).
Những lý do lịch sử này không có nghĩa là bạn nên tránh dùng HTMLCollection. Bạn không tự tạo các đối tượng HTMLCollection, mà nhận chúng từ các API như Document.getElementsByClassName(), và các API này không bị phản đối sử dụng. Tuy nhiên, hãy cẩn thận với sự khác biệt về ngữ nghĩa so với một mảng thực sự.
Thuộc tính thể hiện
HTMLCollection.lengthRead only-
Trả về số lượng phần tử trong tập hợp.
Phương thức thể hiện
HTMLCollection.item()-
Trả về phần tử cụ thể tại chỉ số
indextính từ 0 trong danh sách. Trả vềnullnếuindexnằm ngoài phạm vi.Đây là lựa chọn thay thế cho việc truy cập
collection[i](cách này sẽ trả vềundefinedkhiinằm ngoài phạm vi). Cách này chủ yếu hữu ích cho các triển khai DOM không phải JavaScript. HTMLCollection.namedItem()-
Trả về nút cụ thể có
idhoặc, nếu không có,namekhớp với chuỗi được chỉ định bởiname. Việc khớp theonamechỉ được dùng như lựa chọn cuối, chỉ trong HTML, và chỉ khi phần tử được tham chiếu có hỗ trợ thuộc tínhname. Trả vềnullnếu không có nút nào khớp với tên đã cho.Đây là lựa chọn thay thế cho việc truy cập
collection[name](cách này sẽ trả vềundefinedkhinamekhông tồn tại). Cách này chủ yếu hữu ích cho các triển khai DOM không phải JavaScript.
Sử dụng trong JavaScript
HTMLCollection cũng hiển thị các thành viên của nó dưới dạng thuộc tính theo tên và chỉ số. Mã định danh HTML có thể chứa : và . như các ký tự hợp lệ, điều này sẽ buộc phải dùng cú pháp ngoặc vuông để truy cập thuộc tính. Hiện tại, một đối tượng HTMLCollection không nhận diện các id chỉ gồm chữ số, điều này sẽ gây xung đột với kiểu truy cập như mảng, dù HTML vẫn cho phép chúng.
Ví dụ, giả sử trong tài liệu chỉ có một phần tử <form> và id của nó là myForm:
let elem1, elem2;
// document.forms is an HTMLCollection
elem1 = document.forms[0];
elem2 = document.forms.item(0);
alert(elem1 === elem2); // shows: "true"
elem1 = document.forms.myForm;
elem2 = document.forms.namedItem("myForm");
alert(elem1 === elem2); // shows: "true"
elem1 = document.forms["named.item.with.periods"];
Thông số kỹ thuật
| Specification |
|---|
| DOM> # interface-htmlcollection> |