timer = setInterval(function(){ move.style.left = move.offsetLeft+ 10+"px"; if(move.offsetLeft >= 0){ clearInterval(timer); } }, 30); 当move.offsetLeft >= 0成立时,为何clearInterval和+10会一直执行下去?
只看你贴出的代码,主要问题是判断条件的问题
把move.style.left = move.offsetLeft+ 10+"px";放到if语句的后面,用else包围起来就可以解决问题。
BUG原因:
你把移动的代码写在了判断的前面,会导致你每次触发移入事件都会先移动10px,然后再清除计时器,如此循环往复,你的判断语句完全没有起到效果。
因为你的那个判断条件一直是成立的呀,move.offsetLeft>=0这个条件一直成立,所以 clearInterval(timer)会一直执行。计时器也会一直执行。