我想知道是否有任何特定的方法让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
}
}
答案 0 :(得分:0)
您的代码存在的一个问题是:
setTimeout(doMove(topDiv,bottomDiv),20);
您正在立即调用doMove
并将值undefined
作为第一个参数传递给setTimeout。不完全确定以下内容可以解决您的问题,但我建议您尝试这样做:
setTimeout(function() { doMove(topDiv,bottomDiv); }, 20);