<style>
div {
position: absolute;
left: 0;
width: 100px;
height: 100px;
background-color: tan;
}
</style>
<body>
<div></div>
</body>
<script>
var div = document.querySelector('div');
var timer = setInterval(function fn() {
if (div.offsetLeft >= 100) {
} else {
div.style.left = div.offsetLeft + 1 + 'px';
console.log(div.style.left);
}
}, 30);
</script>
就像这段代码,我本来想设置div的offsetleft大于等于100就会clearinterval(timer),但是我的if语句里面没有写clearintervale(timer),运行的时候div还是会在offsetleft==100的时候停下,这是为什么呢?
因为以后的div.style.left等于100了,执行if里面的语句没有执行else语句,所以永远是100px,if里面因为没有表达式,所以你看见的元素就停那了,其实计时器还在运行,只不过永远执行if语句没有执行else语句
你所说的停下来是指元素停下来,但是定时器本质是没有停下来的哦,因为你的if里面没有代码,也不属于else