2014-12-19 2 views
2

다음은 제 코드입니다.JavaScript : TypeError : document.getElementById (...)가 null입니다.

<html> 

<head> 
<script> 
    var x = 5; 
    var y = 6; 
    var z = x + y; 
    document.getElementById("add").innerHTML = z; 
</script> 
</head> 

<body> 
    <h1>Demo</h1> 
<div id="demo">Addition of 5 and 6 is <span id="add"></span> 
</div> 

</body> 

</html> 

그리고 z 값을 표시하려고 할 때 다음 오류가 발생합니다.

TypeError: document.getElementById(...) is null 

도와주세요.

+0

단지'script' 이동 페이지 하단의 블록 – Saqueib

+0

jQuery 태그를 가져 오지 않는 이유는 무엇입니까? –

+0

@ dystroy-fixed ... – RobG

답변

3

주문 변경 : getElementById이 호출 될 때 정의 된대로 요소 다음에 스크립트를 넣으십시오. http://jsbin.com/luqeyo/1/edit?html,output

당신이 전화를 시도하기 때문에이

window.onload = function() { 
    var x = 5; 
    var y = 6; 
    var z = x + y; 
    document.getElementById("add").innerHTML = z; 
} 

데모 같은 이벤트를 온로드하는

<script> 
    $(function(){ 
     var x = 5; 
     var y = 6; 
     var z = x + y; 
     $('#add').html(z); // if you use jQuery, you may as well do that 
    }); 
</script> 
</head> 
<body> 
    <h1>Demo</h1> 
<div id="demo">Addition of 5 and 6 is <span id="add"></span> 
</div> 

</body> 
+0

자주 묻는 질문 (FAQ)이 필요하다면,이 질문 (그리고 콜백의 * this *에 관한 것)은 왜 그런 질문이 있어야하는지에 대한 매우 훌륭한 주장입니다. – RobG

+0

이유는 다음과 같습니다. 1. 요소가 아직 존재하지 않습니다. 2. 해당 ID가없는 요소가 없습니다. 3. 대문자 사용 오류 (2의 하위 집합). – RobG

+0

감사합니다 ... 그것은 내 하루를 저장합니다 .. –

3

코드를 추가

<body> 
    <h1>Demo</h1> 
<div id="demo">Addition of 5 and 6 is <span id="add"></span> 
</div> 
<script> 
    var x = 5; 
    var y = 6; 
    var z = x + y; 
    document.getElementById("add").innerHTML = z; 
</script> 
</body> 

또 다른 해결책은 jQuery의 ready 기능을 사용하는 것입니다 문서를 사용할 준비가되기 전에 모든 자원을로드하는 동안이 방법을 사용할 수 있습니다 (등 이미지를) 기다릴하지 않으려면는

document.onreadystatechange = function() { 
    if (document.readyState === "complete") { 
     ready(); 
    } 
    } 

    function ready() { 
     var x = 5; 
     var y = 6; 
     var z = x + y; 
     document.getElementById("add").innerHTML = z; 
    } 

데모 :

업데이트 http://jsbin.com/luqeyo/2/edit?html,output

관련 문제