javascript - 关于setTimeout()和clearTimeout()方法的使用?
怪我咯
怪我咯 2017-04-10 17:58:58
[JavaScript讨论组]
<script>
var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout(clearTimeout(timeoutid),3000);
</script>

alert是在1秒后调用,而clearTimeout是在3秒后才调用,为什么alert不起作用了,也就是为什么超时调用为什么会被取消了啊?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
PHPz

setTimeout()接受的第一个参数应该是一个函数;你这里clearTimeout(timeoutid)这条语句会被立即执行,所以第一行的定时器瞬间就被取消。把语句转换成匿名函数就好了:

var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout(function(){clearTimeout(timeoutid)},3000);
高洛峰

to 楼主:
问题是因为setTimeout的传参方式有问题,你的第二个setTimeout中传的参数有问题,不能加括号,当页面解析到你的参数时,看到括号直接执行函数了

setTimeout(foo(),2000)  // 正常应该这么写 =》 setTimeout(foo,2000)

如果你需要在执行时给函数传参,比如timeoutid,可以这么写

setTimeout(clearTimeout,3000,timeoutid);

把参数放到3000的后面,这样执行时,就自动把参数传给执行函数了

黄舟

var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout(clearTimeoutId,500);
function clearTimeoutId() {

clearTimeout(timeoutid);

}

var timeoutid=setTimeout("alert('32ew')",1000);
setTimeout("clearTimeout(timeoutid)",500);

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号