Phương thức Element getElementsByClassName() trả về một HTMLCollection trực tiếp chứa mọi phần tử hậu duệ có tên hoặc các tên lớp được chỉ định
Phương thức getElementsByClassName() trên giao diện element.getElementsByClassName('test'); 1 về cơ bản hoạt động theo cùng một cách, ngoại trừ nó hoạt động trên toàn bộ tài liệu, bắt đầu từ thư mục gốc của tài liệu
getElementsByClassName(names)
element.getElementsByClassName('test'); 2
Một chuỗi chứa một hoặc nhiều tên lớp để so khớp, được phân tách bằng khoảng trắng
Một HTMLCollection cung cấp một danh sách cập nhật trực tiếp mọi phần tử là thành viên của mọi lớp trong element.getElementsByClassName('test'); 2
Như mọi khi, bộ sưu tập được trả về đang hoạt động, nghĩa là nó luôn phản ánh trạng thái hiện tại của cây DOM bắt nguồn từ phần tử mà hàm được gọi. Khi các phần tử mới khớp với element.getElementsByClassName('test'); 2 được thêm vào cây con, chúng sẽ ngay lập tức xuất hiện trong bộ sưu tập. Tương tự, nếu một phần tử hiện có không khớp với element.getElementsByClassName('test'); 2 đã điều chỉnh tập hợp các lớp của nó sao cho khớp với nhau, nó sẽ ngay lập tức xuất hiện trong tập hợp
Điều ngược lại cũng đúng;
Ghi chú. Trong chế độ quirks, các tên lớp được so sánh theo kiểu không phân biệt chữ hoa chữ thường. Mặt khác, chúng phân biệt chữ hoa chữ thường
Để tìm kiếm các phần tử bao gồm trong số các lớp của chúng một lớp được chỉ định duy nhất, chúng tôi chỉ cung cấp tên lớp đó khi gọi getElementsByClassName()
element.getElementsByClassName('test');
Ví dụ này tìm tất cả các phần tử có lớp element.getElementsByClassName('test'); 8, cũng là phần tử con của phần tử có lớp element.getElementsByClassName('test'); 9 của document.getElementById('main').getElementsByClassName('test'); 0
document.getElementById('main').getElementsByClassName('test');
Để tìm các phần tử có danh sách lớp bao gồm cả lớp document.getElementById('main').getElementsByClassName('test'); 1 và lớp element.getElementsByClassName('test'); 8
element.getElementsByClassName('red test');
Bạn có thể sử dụng phương thức document.getElementById('main').getElementsByClassName('test'); 3 trên cú pháp mảng tiêu chuẩn hoặc HTMLCollection được trả về để kiểm tra các phần tử riêng lẻ trong tập hợp. Tuy nhiên, đoạn mã sau sẽ không hoạt động như người ta mong đợi vì lớp document.getElementById('main').getElementsByClassName('test'); 5 sẽ thay đổi ngay sau khi bất kỳ lớp document.getElementById('main').getElementsByClassName('test'); 6 nào bị xóa
const matches = element.getElementsByClassName('colorbox'); for (let i = 0; i < matches.length; i++) { matches[i].classList.remove('colorbox'); matches.item(i).classList.add('hueframe'); }
Thay vào đó, hãy sử dụng một phương pháp khác, chẳng hạn như
const matches = element.getElementsByClassName('colorbox'); while (matches.length > 0) { matches.item(0).classList.add('hueframe'); matches[0].classList.remove('colorbox'); }
Mã này tìm các phần tử hậu duệ với lớp document.getElementById('main').getElementsByClassName('test'); 6, thêm lớp document.getElementById('main').getElementsByClassName('test'); 8, bằng cách gọi document.getElementById('main').getElementsByClassName('test'); 9, sau đó loại bỏ document.getElementById('main').getElementsByClassName('test'); 6 (sử dụng ký hiệu mảng). Một phần tử khác (nếu còn lại) sẽ trở thành document.getElementById('main').getElementsByClassName('test'); 9
Chúng ta cũng có thể sử dụng các phương thức element.getElementsByClassName('red test'); 2 trên bất kỳ HTMLCollection nào bằng cách chuyển HTMLCollection làm giá trị element.getElementsByClassName('red test'); 5 của phương thức. Ở đây chúng ta sẽ tìm thấy tất cả các phần tử element.getElementsByClassName('red test'); 6 có lớp là element.getElementsByClassName('test'); 8