我正在尝试测试一个简单的递归函数来制作倒数计时器。到目前为止,我有这个javascript函数:
setInterval(run_countdown("1"),1000);
function run_countdown(num) {
var str = document.getElementById(num).innerHTML;
if(str === 0){
str = 59;
num = num + 1;
run_countdown(num)
}
var minus = str - 1;
var res = str.replace(str,minus);
document.getElementById(num).innerHTML=res;
return;
};
这是浏览器中的标记:
<table border="0">
<tbody>
<tr>
<td id="6">00</td>
<td id="5">00</td>
<td id="4">08</td>
<td id="3">02</td>
<td id="2">42</td>
<td id="1">02</td>
</tr>
<tr>
<th>Years</th>
<th>Months</th>
<th>Days</th>
<th>Hours</th>
<th>Minutes</th>
<th>Seconds</th>
</tr>
</tbody>
</table>
当我在浏览器中运行该页面时,我在第一个getElementById中的consol中出现“未捕获的TypeError:无法读取null的innerHTML”的错误。我在num上做了一个警报,它好像正在传递。不太确定我哪里出错了。
答案 0 :(得分:2)
正如elchlanrs所说,setInterval采用函数引用。尝试
setInterval(function(){
run_countdown("1");
}, 1000);
这将在调用run_countdown(“1”)之前等待一整秒,大概允许您的文档在执行之前完成加载,这应该可以解决错误。
答案 1 :(得分:1)
您需要等到页面已加载:
document.onload = function() {
setInterval(run_countdown("1"),1000);
}