javascript - 关于setTimeout
怪我咯
怪我咯 2017-04-11 09:43:46
[JavaScript讨论组]

有一个按钮,按了之后会显示另外一个元素,然后setTimeout来自动隐藏这个元素。隐藏的时候用到动画所以setTimeout来设置display:none。这个时候如果在元素还没隐藏的时候再点按钮让元素显示就会出bug。
应该怎么来写才对?

怪我咯
怪我咯

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

全部回复(4)
巴扎黑

你说的是这样?

html

<p id="show" style="display:none;">哦</p>
<button id="btn">点我啊</button>

js

var timeoutHandler = null;
document.getElementById('btn').onclick = function(){
     var show = document.getElementById('show');
     if(timeoutHandler){
         clearTimeout(timeoutHandler);
     }
     show.style.display = 'block';
     timeoutHandler = setTimeout(function(){
         show.style.display = 'none';
     },5000);
};
PHP中文网

在逻辑里面加一层关于隐藏元素正在隐藏的判断,如果在它正在隐藏的过程中再次点击了,应该retrun出去。

黄舟

设置隐藏的时候点击无效即可

黄舟

执行前清除一次定时器或者采用one来一次性绑定可以解决。
不过能不用定时器尽量不用,你所说的效果css就能写出来,何必用定时器。
过渡属性transition中有一个delay来控制延迟变化,你只需改变一个class控制样式,具体请翻w3c。

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

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