[英]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.