清除全局函数内函数的超时
Clear timeout of a functions inside global function
我设置了一个函数,该函数加载到名为 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);
}
SetTimeout returns 一个值,为计时器 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
要清除超时,您必须将其分配给保存引用的变量。这是一个例子:
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()
以清除第三个和第四个计时器。
您可以为此使用 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);
});
<button id="x">Stop Timer 3 and 4</button>
我设置了一个函数,该函数加载到名为 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);
}
SetTimeout returns 一个值,为计时器 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
要清除超时,您必须将其分配给保存引用的变量。这是一个例子:
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()
以清除第三个和第四个计时器。
您可以为此使用 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);
});
<button id="x">Stop Timer 3 and 4</button>