收到错误:无法将属性“innerHTML”设置为 null
2014-09-22
1149
我一直收到错误消息:无法设置 null 的属性“innerHTML”。
我尝试更改 innerHTML ->innerText。仍然不起作用。
我在这里遗漏了什么?
function countdown(minutes) {
var seconds = 60;
var mins = minutes
function tick() {
var counter = document.getElementById("timer");
var current_minutes = mins-1;
seconds--;
counter.innerHTML =
current_minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds);
if( seconds > 0 ) {
setTimeout(tick, 1000);
} else {
if(mins > 1){
// countdown(mins-1); never reach “00″ issue solved:Contributed by
Victor Streithorst
setTimeout(function () { countdown(mins - 1); }, 1000);
}
}
}
tick();
}
countdown(3);
html
<div id="timer"></div>
1个回答
您正在调用
countdown()
,而该函数又调用
tick()
,而该函数又调用
document.getElementById("timer")
,
甚至在该元素尚未解析
之前。
尝试这样做:
<div id="timer"></div>
<script type="text/javascript">
function countdown(minutes) {
var seconds = 60;
var mins = minutes
function tick() {
var counter = document.getElementById("timer");
var current_minutes = mins-1
seconds--;
counter.innerHTML = current_minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds);
if( seconds > 0 ) {
setTimeout(tick, 1000);
} else {
if(mins > 1) {
// countdown(mins-1);
setTimeout(function () { countdown(mins - 1); }, 1000);
}
}
}
tick();
}
countdown(3);
</script>
在这种情况下,顺序很重要。您需要确保文档在通过 DOM 访问该元素之前已经遇到过该元素。
rossipedia
2014-09-22