首页 新闻 搜索 专区 学院

哪位大佬帮帮小弟

1
悬赏园豆:100 [已解决问题] 解决于 2021-04-02 13:38

哪位大佬帮小弟看一下,为什么在if语句不成立的前提下还能执行setTimeout事件?

<div id="light" class="white_content">
<a href="javascript:void(0)" onclick="two()" style="z-index:99;left: -5px;">×</a>
<a href="">
<img src="./img/shang.jpg" width="100%" height="100%" alt="" >
</a>
</div>
<script>
function one(){
document.getElementById('light').style.display='block';
}
function two(){
document.getElementById('light').style.display='none';
}
var a1 = document.getElementById('light');
a1.style.display='none';
var i = 0;
while (i < 100) {
if(a1.style.display == 'none'){
(function(i) {
setTimeout(function() {
console.log(a1.style.display);
one();
console.log(i)
}, 3000 * i)
})(i++)
}
}
</script>

小青_年的主页 小青_年 | 初学一级 | 园豆:116
提问于:2021-04-02 10:10
< >
分享
最佳答案
0

感谢各位大佬的帮助,我就是想做一个可以每5秒弹出图片,如果图片已经弹出,那么计时器就暂停,如果关掉图片后,启动计时器。不过我现在已经理清思路,把问题解决了

小青_年 | 初学一级 |园豆:116 | 2021-04-02 13:35
其他回答(3)
0

算了,你看看博客园这bug,问题回答个蛋

小草上飞飞 | 园豆:317 (菜鸟二级) | 2021-04-02 10:27

html里套html

支持(0) 反对(0) 小草上飞飞 | 园豆:317 (菜鸟二级) | 2021-04-02 10:28

你不会调的是本机的代码,看的是服务器上的网页吧?

支持(0) 反对(0) 小草上飞飞 | 园豆:317 (菜鸟二级) | 2021-04-02 10:28
0

你的setTimeout回调函数里又没有if语句,当然会一直执行

Laggage | 园豆:234 (菜鸟二级) | 2021-04-02 11:27
0

你这个代码在页面加载完成以后此时a1.style.display = 'none',会直接先执行一遍,所以会一直生效。
想让它停止可以尝试清除定时器。

收获园豆:100
魔露西 | 园豆:583 (小虾三级) | 2021-04-02 12:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册