传入的函数含有参数需要使用匿名函数包裹,否则不会一步步执行,而是直接返回执行到临界值后的结果
setTimeout是将函数加入代码队列,不能添加括号,添加了括号,系统会认为你要执行任务。在你的代码里,执行了函数,在临界点之前,会返回undefined,setTimeout没起作用,因为你返回的是undefiend;但是是递归调用,所以系统又去执行这个”setTimeout” 这样看起来一下就到了800
function moveInput(className) {
// if(!document.getElementsByClassName(className)) return false;
var danmu = document.getElementsByClassName(className)[0];
// if(danmu.movement) clearTimeout(danmu.movement);
var xpos = parseInt(danmu.style.left);
if( xpos == 800 ) return true;
if( xpos < 800) {
// var dist = Math.ceil((800-xpos)/10);
xpos++;
}
danmu.style.left = xpos+'px';
// move(danmu);
// setPosition(className,"50px","100px");
danmu.movement = setTimeout(function(){
moveInput(className)},20);
}