javascript - 未捕获的类型错误 : Cannot set property 'innerHTML' of null

标签 javascript html innerhtml

我收到此错误:“未捕获类型错误:无法将属性“innerHTML”设置为 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 之间循环,然后又回到 0。执行此操作的逻辑有些复杂。仅供引用,有一个使用 % 运算符的便捷技巧,您可以使用:

imgn = (imgn + 1) % 3;

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

关于javascript - 未捕获的类型错误 : Cannot set property 'innerHTML' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23783471/

相关文章:

javascript - 不引人注目的 knockout 模板问题

javascript - 执行动态生成的 Javascript

AngularJS element.innerHTML 从指令中未定义

angular - 使用 angular2 为 innerHtml 渲染 CSS

javascript - 使用 reactJs 和 chartjs 绘制饼图

javascript - Jquery、ajax : Clicking on a button and getting the value of the cell next to it on the same row

javascript - 下拉菜单隐藏在 slider 后面。 (z-index 不工作。)

javascript - 使用 css 的行编号段落

javascript - 使 div 溢出其容器以使用 marquee.js

javascript - Vanilla NG2 组件未显示?