2014-05-21 9 views
0

이 오류가 발생합니다 : "Uncaught TypeError: Cannot set property 'innerHTML' of null". 내 코드에서 오류를 찾을 수 없습니다. 나는 CSS 나 jQuery를 사용하지 않는다. 여기 내 HTML 코드입니다 :잡히지 않은 TypeError : null의 'innerHTML'속성을 설정할 수 없습니다.

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <!--<script src="js/banner_test_script.js" language="javascript" type="text/javascript"></script>--> 
    </head> 
    <body> 
     <div id="ban"></div> 
     <script src="js/banner_test_script.js"></script> 
    </body> 
</html> 

그리고 여기 내 자바 스크립트 코드 :

window.onload = function what() 
{ 
    var myTimery = setInterval(function() { 
     myTimer(); 
    }, 1000); 

    var imgn = 0; 
    function myTimer() 
    { 
     if (imgn === 0) 
     { 
      var d = "../../download.jpg"; 
      imgn++; 
     } 
     else if (imgn === 1) 
     { 
      var d = "../../images.jpg"; 
      imgn++; 
     } 
     else if (imgn === 2) 
     { 
      var d = "../../images1.jpg"; 
      resetImgn(); 
     } 
     var p = '<img src="' + d + '"></img>'; 
     document.getElementById("ban").innerHTML = "lol"; 
     document.writeln(p); 
     console.log(document.getElementById('ban') + "1"); 
     console.log(document.getElementById("ban") + "2"); 
    } 
    ; 

    function resetImgn() 
    { 
     imgn = 0; 
    } 
    ; 
    /* 
    function myTimer() 
    { 
    for (i = 0; i < 200; i++) 
    { 
    document.writeln(i); 
    } 
    } 
    ; 
    */ 
}; 

답변

3

당신은 당신이 페이지의 초기 분석 (후 document.write (또는 document.writeln)를 사용하는 경우 때문에 타이머에서 사용하고있는) 암시 적으로 document.open을 수행합니다.이 페이지는 기존 페이지를 완전히 삭제합니다 (그리고 사용자가 작성한 것으로 바꿉니다). 따라서 요소를 찾으려고 할 때 요소가 더 이상 존재하지 않습니다.

귀하의 document.writeln(p)은 무엇을 의미하는지 분명하지 않지만 제거하면 더 이상 요소를 지우지 않으며, document.getElementById은 해당 요소를 찾을 수 있습니다.

당신의 목표는 다음 ban 요소에 기록 p의 이미지 마크 업해야하는 경우 :

document.getElementById("bad").innerHTML = p; 

을 ... 그리고 document.writeln를 제거하면 그것을 할 것입니다.


사이드 참고 : setInterval 라인이 될 수있는 단지 : var myTimery = setInterval(myTimer, 1000); 기능 일류 개체입니다.


사이드 노트 2 : 당신은 다시 0으로 당신은 그 일을 위해 다소 복잡한 논리를 가지고, 2, 0 imgn 사이에 1 순환 것으로 보인다. 참고하시기 바랍니다 % 연산자를 사용하여 편리한 트릭을 사용할 수있다 :

imgn = (imgn + 1) % 3; 

은 0으로 시작 가정하면, 다음은 ... 다음 다음 다음 1, 2, 0, 1이됩니다

+0

+1 . 또한, OP가 이미지 태그를 문서에 동적으로 추가하려고한다면 그는'appendChild'를 사용할 수 있습니다. 예를 들어'var p = document.createElement ('img'); p.setAttribute ('src', d); document.body.appendChild (p);' – rescuecreative

관련 문제