javascript - 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);
}
解决方案
添加一个条件来调用递归函数,如下所示。
if (secs < 0) {
secs = secsInput;
}
//recurring function
countDown = setTimeout('startTimer('+secs+',"'+elem+'")', 1000);
推荐阅读
- scala - 将数据帧写入 hdfs 的 Spark 作业被中止 FileFormatWriter.scala:196
- javascript - Dropzone 客户端通过文件上传到 AWS 预签名 url 来调整大小
- android - 导航和路由颤振
- python - 循环遍历数据框(列和行)并替换数据
- git - 通过 git filter-branch 调用时反直觉的 git rm --cached 标志行为(追溯 .gitignore)
- php - Array_Filter 移除
- mysql - 我需要 Prestashop 产品的 mysql 查询(导入/导出)公式
- swift - 无法断言与屏幕边界相关的约束
- android - How to implement GridLayout in Androidx?
- c# - 从 web.config 中提取文本