当我尝试运行该程序时,在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/

10-10 02:01