javascript - 如何清除 JavaScript 中函数的超时?

标签 javascript

我有一个功能,每次单击按钮时都会不断重置,但是,当某个图片出现在屏幕上时,我试图清除该计时器。程序中发生了更多事情,但这是我遇到的一般问题。这是我目前所拥有的:

JavaScript:

function reset() {
  var f = document.getElementById("ff").onclick;
  var ft = setTimeout(function(){ dontf() }, 3000);
  f = ft;
}

function dontf() {
  document.getElementById("r").src="H.jpg";
}

function s() {
  if (document.getElementById("r").src == "file:///C:/Users/S.jpg") {
    clearTimeout(ft);
  }
}

HTML

<button onclick="reset(); s();" id="ff">Fd</button>

最佳答案

你可以看看这个队友

您需要做的就是在 dontfs 函数都可以访问的范围内定义 var ft

let timer;        
function reset() {
  const element = document.getElementById("resetButton");
  timer = setTimeout(function(){ addImageFunc() }, 3000);
}

function addImageFunc() {
console.log(timer); document.getElementById("addImage").src="https://images.pexels.com/photos/248797/pexels-photo-248797.jpeg?auto=compress&cs=tinysrgb&h=350";
}

function stopReset() {
  if (document.getElementById("addImage").src == "https://images.pexels.com/photos/248797/pexels-photo-248797.jpeg?auto=compress&cs=tinysrgb&h=350") {
    clearTimeout(timer);
  }
}
<html>
<body>
  <button onclick="reset(); stopReset();" id="resetButton">Fd</button>
  <img id='addImage'>
</body>
</html>

Suggestions

  • 对变量和函数使用适当的命名约定,这将使您的代码更具可读性和易于调试。
  • 不要使用变量。使用 let 或 const。
  • 尽量避免使用全局范围变量,除非别无选择。

关于javascript - 如何清除 JavaScript 中函数的超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618941/

相关文章:

javascript - 重写 jquery 小部件中的方法

javascript - jQuery.ajax post JSON 作为连接字符串发送

javascript - 如何使用javascript将数据从asp.net中的listview导出到pdf

javascript - 找不到模块 'babel-core' 中的错误。使用 react.js、webpack 和 express 服务器

javascript - 了解此控制台错误 - 'top' 未定义

javascript - tippy.js 工具提示不响应 CSS 样式

javascript - 使用新数据更新 D3 流图

javascript - 与 addClass 和 show 相关的 jQuery 代码错误

javascript - 将 ForEach 从 JQuery 转换为 Javascript

javascript - setInterval 函数也在 Angular 6 的其他组件中运行