簡體   English   中英

未捕獲的TypeError:無法將屬性'innerHTML'設置為null

[英]Uncaught TypeError: Cannot set property 'innerHTML' of null

我收到此錯誤: "Uncaught TypeError: Cannot set property 'innerHTML' of null" 我在代碼中找不到錯誤。 我現在不使用CSS,也不使用jQuery。 這是我的HTML代碼:

<!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);
     }
     }
     ;
     */
};

如果您在頁面的初始解析后使用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 0、1、2之間imgn 0之間循環。執行此操作的邏輯有些復雜。 僅供參考,使用%運算符有一個方便的技巧,您可以使用:

imgn = (imgn + 1) % 3;

假設您從0開始,下一個將是1,然后是2,然后是0,然后是1 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM