点击按钮 div移动。但第二次点击按钮div的移动速度会累加。求解,代码如下。
http://jsbin.com/menozeyova/1/edit?html,js,output
在每次点击时我已经加了clearInterval。
点击按钮 div移动。但第二次点击按钮div的移动速度会累加。求解,代码如下。
http://jsbin.com/menozeyova/1/edit?html,js,output
在每次点击时我已经加了clearInterval。
把 var timer = null
移到 startMove()
外面就行了
javascript
window.onload = function() { var Obtn = document.getElementById("btn1"); Obtn.onclick = function() { startMove(); }; var timer = null; function startMove() { var oDiv = document.getElementById("div1"); var iSpeed = 1; clearInterval(timer); //? 没有作用,第二次点击按钮后div还是会加速 timer = setInterval(function() { if (oDiv.offsetLeft >= 300) { clearInterval(timer); } else { //这里如果不加else,每次点击按钮时即使条件已经到达,还是会每点击一下按钮,div前进一个iSpeed。因为定时函数不会马上结束,要先把下方的语句执行。 oDiv.style.left = oDiv.offsetLeft + iSpeed + 'px'; } }, 30); } };
你把timer放在函数内定义,每次点击按钮都会新定义一个timer。各个timer之间是独立的,互不影响。
把timer放在函数外定义,这样每次点击按钮操纵的是同一个timer。clearInterval才会生效。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
因为timer是局部变量吧?运行之后就销毁了