未捕获的TypeError:无法设置null的属性'innerHTML'

时间:2014-05-21 12:40:11

标签: javascript html innerhtml

我收到此错误:"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);
     }
     }
     ;
     */
};

1 个答案:

答案 0 :(得分:3)

如果您在初始解析页面后使用document.write(或document.writeln)(您执行此操作,因为您在计时器中使用它),则会隐式执行{{1} },它完全消除了现有的页面(并用你写的内容替换它)。因此,当您尝试查找它们时,您的元素将不再存在。

我不清楚你的document.open是做什么的,但是如果你删除它,你就会停止消灭你的元素,而document.writeln(p)应该能够找到它。

如果您的目标是将document.getElementById中的图片标记写入p元素,那么:

ban

...并删除document.getElementById("bad").innerHTML = p; 即可。


旁注:document.writeln行可以只是:setInterval函数是第一类对象。


旁注2:你似乎在var myTimery = setInterval(myTimer, 1000); 0,1,2之间循环,然后又回到0.你有一些复杂的逻辑。仅供参考,使用您可以使用的imgn运算符有一个方便的技巧:

%

假设你从0开始,接下来将是1,然后是2,然后是0,然后是1 ......