2014-04-24 3 views
13

나는이 solution을 시도하고의 특성 'getElementsByTagName'을 읽을 수는 있지만 사용 .getElementsByTagName()는 오류 발생 할 수 없습니다catch되지 않은 형식 오류 : 널 (null)

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

가 왜이 오류를 생산하고 나는 그것을 어떻게 해결할 수 있습니까?

+0

'console.log (document.body)'는 무엇을 제공합니까? –

답변

10

document.body에는 body 요소가 만들어 질 때까지 값이 할당되지 않습니다.

<body> 요소에 <head> 요소에서 <script> 이동

또는 함수에 넣어 (당신이 그것의 모든 요소를 ​​얻으려고 노력하고 있기 때문에, 당신은 끝 body 요소의에있을 싶어) 본문이 생성 된 후에 발생하는 이벤트 (예 : windowload 이벤트)에서 호출합니다.

+0

+1, 여전히 나를 위해 너무 빠릅니다. –

+0

... DOMContentLoaded/DOM 준비 콜백 – Utkanos

0

기능 예 : 두 방법과

예 :

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

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

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

http://jsfiddle.net/Ln5zu4Lt/

위의 JavaScript 예제는 페이지로드 (이미지, iframe 등)를 기다리는 것에주의하십시오. 이것은 jQuery가 준비하는 것보다 더 많은 시간이 걸린다.

65

LastPass을 사용하는 경우이 오류 ()가 발생합니다 (최소한 2016 년 11 월 7 일). 내 코드에 문제가 있다고 생각했지만 외관상으로는 그렇지 않습니다.

+7

Chrome 용 LastPass가 확인되었습니다.이 오류가 발생했습니다. 확장 프로그램을 사용 중지하고 수정했습니다. – phocks

+0

두 번째 확인. 페이지의 아무 곳이나 클릭 할 때마다 발생합니다. – l3li3l

+1

LastPass 버그를 고치는 방법? – YangMingYuan

관련 문제