当我尝试运行该程序时,在Firefox中收到一条错误消息,内容是:
(请引用window.setTimeout("moveDate()",100);
行。
有什么想法吗?我认为递归函数可以定义自己,然后调用自己。
function monthScroller(){
document.getElementById("month").style.visibility = "visible";
var x = 0;
var y = 0;
var dest_x = window.innerWidth/2;
var dest_y = window.innerHeight/2;
var interval = 1;
function moveDate() {
if(x<dest_x){ x = x + interval;}
if(y<dest_y){ y = y + interval;}
document.getElementById("month").style.top = y+"px";
document.getElementById("month").style.left = x+"px";
if ((x+interval < dest_x) && (y+interval < dest_y)) {
window.setTimeout("moveDate()",100);
}
else{
name();
}
}
moveDate();
}
最佳答案
对,他们是。但是,window.setTimeout("moveDate()",100);
将在全局范围内评估该代码字符串-在此找不到moveDate
。而是将函数引用传递给 setTimout()
:
window.setTimeout(moveDate, 100);
关于javascript - 无法在Javascript中进行递归调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10809769/