Javascript递归函数变量null

时间:2014-01-17 22:27:42

标签: javascript recursion

我正在尝试测试一个简单的递归函数来制作倒数计时器。到目前为止,我有这个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上做了一个警报,它好像正在传递。不太确定我哪里出错了。

2 个答案:

答案 0 :(得分:2)

正如elchlanrs所说,setInterval采用函数引用。尝试

setInterval(function(){
  run_countdown("1");
}, 1000);

这将在调用run_countdown(“1”)之前等待一整秒,大概允许您的文档在执行之前完成加载,这应该可以解决错误。

答案 1 :(得分:1)

您需要等到页面已加载:

document.onload = function() {
    setInterval(run_countdown("1"),1000);
}