簡體   English   中英

document.getElementById()為null

[英]document.getElementById() is null

我有這段代碼。 正在收到錯誤document.getElementById('foo')為null。 請協助解決這個問題。

<script>
function doMove() {
    var foo=document.getElementById('foo');
    foo.style.left = (foo.style.left+10)+'px'; // pseudo-property code: Move right by 10px
    setTimeout(doMove(),20); // call doMove() in 20 msec
}
doMove();
</script>

</head>
<body>
<div id="foo" style="width:10px;">a</div>
</body>
</html>

這是因為執行腳本時該對象尚不存在。

最簡單的解決方案是將腳本移到正文末尾。

另一個解決方案是等待DOM加載:

window.addEventListener('load', doMove);

將代碼粘貼在主體關閉標簽之前的底部。

嘗試將腳本放置在文檔正文的末尾。

像這樣:

<body>
<div id="foo" style="width:10px;">a</div>
<script>
function doMove() {
var foo=document.getElementById('foo');
     foo.style.left = (foo.style.left+10)+'px'; // pseudo-property code: Move right by 10px
     setTimeout(doMove(),20); // call doMove() in 20 msec
    }
    doMove();
</script>
</body>

運行腳本時該元素尚不存在。 一個簡單的解決方案是從腳本中移出對doMove的調用,並按body標簽的方式對其進行加載,如下所示:

<body onload="doMove()">

或者只是將腳本移動到ID為“ foo”的div下面。

如果支持IE的較早版本(IE9之前的版本),則使用'addEventListener'替代。 使用以下代碼段替換對doMove的調用:

window.addEventListener('load', doMove);

我已經更改了代碼並編寫了此代碼。 現在正在讀取document.getElementById('foo')。 我想每20毫秒移動一次div元素,因為我已經使用過setTimeout(),但是它什么也沒做。

<body>
<div id="foo" style="width:10px;">a</div>
<script language="javascript">
function doMove() {
var foo=document.getElementById('foo');
     foo.style.left = parseInt(foo.style.left)+10+'px'; // pseudo-property code: Move right by 10px
     setTimeout(doMove,20); // call doMove() in 20 msec
    }
    doMove();
</script>
</body>
</html>

暫無
暫無

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

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