2014-05-21 46 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> 

這裏是我的JavaScript代碼:

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應該能夠找到它。

如果你的目標是在p寫入ban元素,然後將圖像標記:

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

...和刪除document.writeln將做到這一點。


邊注:setInterval線可以只是:var myTimery = setInterval(myTimer, 1000);函數是第一類對象。


邊注2:你似乎imgn 1 0至2個,要騎自行車,然後再返回到0。你有做,有些複雜的邏輯。僅供參考,有使用%操作一個方便的技巧,你可以使用:

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

相關問題