Javascript函数内部的函数不工作

javascript function inside function not working

本文关键字:函数 工作 内部 Javascript      更新时间:2023-09-26

我有一个定时器脚本,我希望用户能够设置的时间量。它在加载脚本时工作,当页面加载并将计时器设置为默认值时,但是当我创建一个输入变量和一个按钮来调用该函数时,它不起作用。"外部"函数工作,但是我从工作版本复制并粘贴到函数中的代码没有。似乎内部计时器函数从未被调用,即使'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>

的"Timer: "文本被替换为seconds变量的值,但只是因为在定义内部函数之前的那一行。Date()不打印在内部函数

您将字符串传递给setTimeout,因此它得到eval计算并且范围被打破。只向setTimeout传递函数

    var countdownTimer = setInterval(secondPassed, 1000);