【问题标题】:Clear timeout of a functions inside global function清除全局函数内函数的超时
【发布时间】:2018-04-13 00:47:19
【问题描述】:

我设置了一个函数,该函数可以加载到名为 myFunction 的文档上。它里面有 5 个函数,具有不同的超时时间。我想在我的 html 代码中单击 ID 为 #btn 的按钮时清除第 3 和第 4 个函数的超时时间。这是我的代码

<doctype! HTML>
<html>
<head>
<title>
My Page
</title>
<script src="jquery-3.2.1.js">
<script src="myScript.js">
<script type="text/javascript">
$(document).ready(myFunction);
</script>
</head>
<body>
<button id="btn">
</body>
</html>

myScript.js 在下面

function myFunction(){
setTimeout(function function1(){
 // do stuffs
}, 5000);
setTimeout(function function2(){
 // do stuffs
}, 10000);
setTimeout(function function3(){
 // do stuffs
}, 15000);
setTimeout(function function4(){
 // do stuffs
}, 20000);
setTimeout(function function5(){
 // do stuffs
}, 25000);
}

【问题讨论】:

  • 剩下的代码在哪里??? HTML在哪里.....不要让我们猜测
  • 抱歉再次编辑问题

标签: javascript jquery function cleartimeout


【解决方案1】:

要清除超时,您必须将其分配给保存引用的变量。这是一个例子:

var t1,t2,t3,t4,t5;

function myFunction(){
    t1 = setTimeout(function function1(){
     // do stuffs
    }, 5000);
    t2 = setTimeout(function function2(){
     // do stuffs
    }, 10000);
    t3 = setTimeout(function function3(){
     // do stuffs
    }, 15000);
    t4 = setTimeout(function function4(){
     // do stuffs
    }, 20000);
    t5 = setTimeout(function function5(){
     // do stuffs
    }, 25000);
}

function myClearFunction(){
    clearTimeout(t3);
    clearTimeout(t4);
}

从您的按钮调用myClearFunction() 以清除第三个和第四个计时器。

【讨论】:

    【解决方案2】:

    您可以为此使用clearTimeout。这是一个功能演示:

    var timer1 = setTimeout(function() {
      console.log('timer1');
    }, 5000);
    var timer2 = setTimeout(function() {
      console.log('timer2');
    }, 10000);
    var timer3 = setTimeout(function() {
      console.log('timer3');
    }, 15000);
    var timer4 = setTimeout(function() {
      console.log('timer4');
    }, 20000);
    var timer5 = setTimeout(function() {
      console.log('timer5');
    }, 25000);
    
    document.getElementById('x').addEventListener('click', function() {
      clearTimeout(timer3);
      clearTimeout(timer4);
    });
    &lt;button id="x"&gt;Stop Timer 3 and 4&lt;/button&gt;

    【讨论】:

      【解决方案3】:

      SetTimeout 返回一个值,将其保存为计时器 3 和 4,然后单击按钮单击取消这些值。确保在调用 clear 之前检查 3-4 的值是否已定义。

      Return Value:   A Number, representing the ID value of the timer that is set. Use this value with the clearTimeout() method to cancel the timer
      

      来自https://www.w3schools.com/jsref/met_win_settimeout.asp

      【讨论】:

        猜你喜欢
        • 2015-06-21
        • 1970-01-01
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        • 2016-12-24
        • 2020-04-30
        • 1970-01-01
        • 2020-11-04
        相关资源
        最近更新 更多