javascript函数里面的函数不能正常工作

时间:2014-07-25 22:21:23

标签: javascript function input timer

我有一个计时器脚本,我希望用户能够设置时间量。它在页面加载时加载脚本并将计时器设置为默认值时起作用,但是当我创建一个输入变量和一个调用该函数的按钮时它不起作用。 "外面"函数工作但是我从工作版本复制并粘贴到函数中的代码不起作用。即使' var countdownTimer = setInterval(' secondPassed()',1000),似乎也从未调用内部计时器功能;'是在外部功能的最后。我一直在努力修复它几个小时,我想要一个更有经验的眼睛来检查它。继承人代码:

<script type="text/javascript">
function startTimer() {
    var seconds = parseInt(document.getElementById("time").value);
    document.getElementById('countdown').innerHTML = seconds;
    function secondPassed() {
        document.write(Date());
        var minutes = Math.round((seconds - 30)/60);
        var remainingSeconds = seconds % 60;
        if (remainingSeconds < 10) {
            remainingSeconds = "0" + remainingSeconds; 
        }
        document.getElementById('countdown').innerHTML = minutes + ":" +    remainingSeconds;
        if (seconds == 0) {
            clearInterval(countdownTimer);
            document.getElementById('countdown').innerHTML = "Buzz Buzz";
        } else {    
            seconds--;
        }
    }
    var countdownTimer = setInterval('secondPassed()', 1000);
}
</script>
    <input id="time" type="number">
    <input type="button" value="Set Timer" onClick="startTimer()">
    <span id="countdown" class="timer">Timer: </span>
</body>
&#34;定时器:&#34; text由second变量的值替换,但仅由于定义了inside函数之前的行。日期()未打印在instide函数

1 个答案:

答案 0 :(得分:0)

您正在将字符串传递给setTimeout,因此它会被eval更改并且范围被破坏。只将函数传递给setTimeout

    var countdownTimer = setInterval(secondPassed, 1000);