Tôi đang cố gắng để có được một danh sách trong JavaScript (không sử dụng jQuery) của tất cả các yếu tố trên trang với một tên lớp cụ thể. Do đó, tôi sử dụng hàm getElementsByClassName() như sau:Tại sao getElementsByClassName của JavaScript cung cấp một đối tượng KHÔNG phải là một mảng?
var expand_buttons = document.getElementsByClassName('expand');
console.log(expand_buttons, expand_buttons.length, expand_buttons[0]);
Lưu ý rằng tôi có ba phần tử neo trên trang của tôi với lớp 'mở rộng'. console.log này() kết quả đầu ra
[] 0 undefined
Tiếp theo, cho đá, tôi ném expand_buttons vào mảng riêng của mình như sau:
var newArray = new Array(expand_buttons);
console.log(newArray, newArray.length);
này đột nhiên kết quả đầu ra
[NodeList[3]] 1
và tôi có thể nhấp thông qua nodelist và xem các thuộc tính của ba phần tử neo 'mở rộng' trên trang. Nó cũng đáng chú ý rằng tôi đã có thể nhận được mã của tôi làm việc trong một w3schools test page. Cũng có thể lưu ý rằng việc sử dụng document.getElementsByName của tôi thực sự làm đầu ra (cho bảng điều khiển) một mảng các phần tử, nhưng khi tôi yêu cầu độ dài của nó, nó cho tôi biết 0. Tương tự, nếu tôi cố gắng truy cập một phần tử mảng sử dụng array_name[0]
như bình thường, nó xuất ra 'không xác định', mặc dù rõ ràng là một phần tử bên trong của một mảng khi tôi in đối tượng vào bảng điều khiển.
Có ai có bất kỳ ý tưởng nào tại sao điều này có thể không? Tôi chỉ muốn lặp qua các phần tử DOM và tôi đang tránh jQuery vào lúc này bởi vì tôi đang cố gắng thực hành mã hóa bằng JavaScript vani.
Cảm ơn,
ParagonRG
kiểm tra xem chức năng đó có bị thay đổi không –
Bạn có đang chạy mã của mình sau khi DOM được xây dựng hoặc trước đó không? –
[Hãy cẩn thận với w3schools.] (Http://w3fools.com) – Pointy