哪位大佬帮小弟看一下,为什么在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>
感谢各位大佬的帮助,我就是想做一个可以每5秒弹出图片,如果图片已经弹出,那么计时器就暂停,如果关掉图片后,启动计时器。不过我现在已经理清思路,把问题解决了
算了,你看看博客园这bug,问题回答个蛋
html里套html
你不会调的是本机的代码,看的是服务器上的网页吧?
你的setTimeout
回调函数里又没有if语句,当然会一直执行
你这个代码在页面加载完成以后此时a1.style.display = 'none',会直接先执行一遍,所以会一直生效。
想让它停止可以尝试清除定时器。