首页 > 解决方案 > clearTimeout 不起作用:参数未定义(即使它是在全局范围内定义的)

问题描述

我的 setTimeout() 函数有效,但我的 clearTimeout() 无效。即使我有一个 'if' 语句应该在我的变量 'secs' 小于 0 时运行 clearTimeout 函数,但计时器会一直倒计时到负数。当我在控制台中输入我的变量名“secs”时,我得到了未定义,即使它被定义为我的 setTimeout 调用的函数中的参数。我不知道我做错了什么。有人可以帮忙吗?

我的完整代码在https://codepen.io/Rburrage/pen/qBEjXmx

这是 JavaScript 片段:

function startTimer(secs, elem) {
    t = $(elem);
    t.innerHTML = "00:" + secs;

    if(secs<0) {
        clearTimeout(countDown);
    }
    secs--;
    //recurring function
    countDown = setTimeout('startTimer('+secs+',"'+elem+'")', 1000);

}

标签: javascriptcleartimeout

解决方案


添加一个条件来调用递归函数,如下所示。

if (secs < 0) {

   secs = secsInput;
 }

   //recurring function
    countDown = setTimeout('startTimer('+secs+',"'+elem+'")', 1000);

推荐阅读