日期:2014-05-16  浏览次数:20399 次

关于clearTimeout的问题
function moveElement(elementID,final_x,final_y,interval){
var elem = document.getElementById(elementID);
if(elem.movement){
clearTimeout(elem.movement);
}

var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
var dist = 0;
if(xpos == final_x && xpos == final_y){
return ture;
}
if(xpos < final_y){
dist = Math.ceil((final_x - xpos)/10);
xpos += dist;
}
if(xpos > final_y){
dist = Math.ceil((xpos - final_x)/10);
xpos -= dist;
}
...
var repeat = "moveElement('" + elementID + "'," + final_x + "," + final_y + ","+ interval+")";
elem.movement = setTimeout(repeat,interval);
}
这个函数是不是调用一次clearTimeout()就清除了函数的调用啦?麻烦解释一下,谢谢

------解决方案--------------------
var a=window.setTimeout是指在多少时间后调用某个方法,但在这段时间内用了window.clearTimeout(a)会取消掉这个方法的调用
貌似就是这个样子
------解决方案--------------------
不是清楚函数,而是清楚settimeout
然后代码最后又加上了开启新的settimeout,所以这个代码其实就只是setinterval而已

------解决方案--------------------
这个函数是不是调用一次clearTimeout()就清除了函数的调用啦?麻烦解释一下,谢谢

是的,您这个写法其实就是settimeout模拟setinterval,调用一次clearTimeout()就清除了