“无法设置未定义的属性”innerHTML”

'Cannot set property "innerHTML" of undefined'

本文关键字:属性 innerHTML 未定义 设置      更新时间:2023-09-26

我正在尝试编写一个非常简单的脚本来将元素的内部HTML设置为时间。但是,Javascript不断抛出"无法设置未定义的属性'innerHTML'"错误。在调试过程中,我已经简化了我的脚本,使其在元素(<span>)编码后立即运行,所以我知道它应该已经加载了。我还尝试将此脚本作为<body onload=参数运行 - 同样的错误。我说不出我做错了什么。

<div style="position: fixed; right: 10px; top: 10px; width: auto; font-size: 16pt; border: 2px solid #000000;">
    <span id="clock">Loading...</span>
    <script type="application/x-javascript">
        function setClock(spanid){
            var d = new Date();
            document.getElementById[spanid].innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds;
        }
        setClock("clock");
    </script>
</div>

任何帮助不胜感激!

您没有调用getElementById,而是在尝试索引它。由于它不是数组并且不公开类似数组的行为,因此结果是 undefined 。将您的getElementById[spanId]替换为 getElementById(spanId)

[]而不是document.getElementById(spanid)中的()getElementById函数,它必须使用 () 调用并在其中传递参数。

getSeconds()后也缺少()

<div style="position: fixed; right: 10px; top: 10px; width: auto; font-size: 16pt; border: 2px solid #000000;">
    <span id="clock">Loading...</span>
    <script type="application/x-javascript">
        function setClock(spanid){
            var d = new Date();
            document.getElementById(spanid).innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
        }
        setClock("clock");
    </script>
</div>

演示:小提琴

[]更改为()

function setClock(spanid){
            var d = new Date();
            document.getElementById(spanid).innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds;
        }

现在您已经有了这个修复程序,请添加以下内容:

 setInterval(function () {
     function setClock(spanid) {
         var d = new Date();
         document.getElementById(spanid).innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
     }
     setClock("clock");
 }, 1);

而且你有一个实际的时钟:D