JavaScript Div动画

时间:2014-03-22 13:05:52

标签: javascript sorting

我想知道是否有任何特定的方法让javaScript代码在某个时刻停止执行,以便允许另一个被调用的函数执行,例如在使用Div的排序算法中你调用一个函数这使得两个Div的交换成为可能,因此您可以直观地看到发生的排序。我尝试过使用setTimeout(c,t);然而,如果我发出警报(""),它似乎并没有等待,而且Div似乎没有移动。在移动代码中,它似乎允许移动发生数千个警报弹出。

我的代码如下:

var q;
var w;
function move(x,y)
{
    q = x.style.top; // Keep a reference to the Top divs top element
    w = y.style.top; // Keep a reference to the Top divs top element
    doMove(x,y);
}
function doMove(topDiv, bottomDiv)
{
    //alert("in doMove " + topDiv);
    topDiv.style.top = parseInt(topDiv.style.top)+2+'px';
    bottomDiv.style.top = parseInt(bottomDiv.style.top)-2+'px';
    //alert("hi");
    if(bottomDiv.style.top != q && topDiv.style.top != w) // Check if the Top and Bottom divs have finally swapped
    {
        setTimeout(doMove(topDiv,bottomDiv),20); // call doMove in 20msec
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码存在的一个问题是:

setTimeout(doMove(topDiv,bottomDiv),20); 

您正在立即调用doMove并将值undefined作为第一个参数传递给setTimeout。不完全确定以下内容可以解决您的问题,但我建议您尝试这样做:

setTimeout(function() { doMove(topDiv,bottomDiv); }, 20);