2014-04-24 44 views
13

Tôi đang cố gắng này solution nhưng .getElementsByTagName() được sử dụng, được sản xuất một lỗi:lỗi chưa gặp: Không thể đọc thuộc 'getElementsByTagName' null

var tags = document.body.getElementsByTagName("*"); 
Uncaught TypeError: Cannot read property 'getElementsByTagName' of null 

Tại sao nó sản xuất lỗi này và làm thế nào tôi có thể sửa chữa nó?

+0

'console.log (document.body)' cung cấp cho bạn những gì? –

Trả lời

10

document.body sẽ không nhận được giá trị được chỉ định cho đến khi phần tử nội dung được tạo.

Di chuyển <script> từ các yếu tố <head> tới phần tử <body> (kể từ khi bạn đang cố gắng để có được tất cả các yếu tố trong nó, bạn muốn được ở cuối của phần tử cơ thể) hoặc đặt nó trong một hàm và gọi nó từ một sự kiện cháy sau khi cơ thể được tạo ra (chẳng hạn như sự kiện windowload).

+0

+1, vẫn còn quá nhanh đối với tôi. –

+0

... hoặc sử dụng nó bên trong một cuộc gọi lại DOMContentLoaded/DOM sẵn sàng – Utkanos

0

ví dụ Chức năng:

Ví dụ với cả hai phương pháp:

function init() { 
    alert("hello javascript"); 
}; 

window.addEventListener("load",init,false); 

$(document).ready(function() { 
    alert("hello jQuery"); 
}); 

http://jsfiddle.net/Ln5zu4Lt/

Hãy cẩn thận, ví dụ JavaScript ở trên đợi tải trang (hình ảnh, iframe, v.v ...). Điều này cần nhiều thời gian hơn jQuery.

65

Lưu ý rằng lỗi này cũng xảy ra nếu bạn đang sử dụng LastPass, ít nhất là vào ngày 7 tháng 11 năm 2016. Tôi nghĩ rằng đó là vấn đề với mã của tôi, nhưng dường như nó không phải.

+7

Xác nhận LastPass cho Chrome đã tạo ra lỗi này. Đã tắt tiện ích và đã sửa nó. – phocks

+0

Xác nhận thứ hai. Nó xảy ra bất cứ khi nào tôi nhấp vào bất kỳ đâu trên một trang. – l3li3l

+1

Làm thế nào để sửa lỗi LastPass? – YangMingYuan

Các vấn đề liên quan