在JavaScript中暂停片刻
我有以下JavaScript代码:在JavaScript中暂停片刻,javascript,Javascript,我有以下JavaScript代码: var cILo=true; var img1="images/title-2a.png"; var img2="images/title-2b.png"; function loadblinker() { for (var i=0,l=Math.floor(Math.random()*10);i<l;++i) { cILo=!cILo; if (cILo) { document.get
var cILo=true;
var img1="images/title-2a.png";
var img2="images/title-2b.png";
function loadblinker() {
for (var i=0,l=Math.floor(Math.random()*10);i<l;++i) {
cILo=!cILo;
if (cILo) {
document.getElementById("lamp").src=img1;
} else {
document.getElementById("lamp").src=img2;
}
!!!! THIS LINE HERE !!!!
}
document.getElementById("lamp").src=img1;
setTimeout("loadblinker()",Math.floor(Math.random()*10000));
}
var cILo=true;
var img1=“images/title-2a.png”;
var img2=“images/title-2b.png”;
函数loadblinker(){
对于(var i=0,l=Math.floor(Math.random()*10);i函数暂停(ms)
{
var d=新日期();
var c=null;
做
{
c=新日期();
}
c-d
使用暂停(1000);
暂停1秒
由。功能暂停(毫秒)提供
{
var d=新日期();
var c=null;
做
{
c=新日期();
}
c-d
使用暂停(1000);
暂停1秒
感谢。我认为更好的方法是使用setInterval
消除for循环。然后可以在Math.floor(Math.random()*10)之后清除间隔
iterations。我不建议仅仅通过在循环中旋转来阻止执行。大多数浏览器在这样做时都会崩溃。我认为更好的方法是使用setInterval
来消除for循环。然后可以在Math.floor(Math.random()*10)之后清除间隔
iterations。我不建议仅仅通过循环来阻止执行。大多数浏览器在这样做时会发疯。浏览器中的Javascript不具备同步暂停的能力。您可以按照建议绕过它,但不应该这样做。浏览器中的Javascript不具备同步暂停的能力同步暂停。您可以按照建议绕过它,但不应该这样做。通常在JavaScript中通过调用setTimeout来处理这一问题,并将延迟后要执行的代码传递给它。或者换句话说,不是在函数中暂停,而是将函数分成两部分:一部分在延迟前执行,另一部分在延迟后执行他下一部分将在之后执行
您已经通过setTimeout递归调用了您的函数,所以您就快到了。请查看是否可以重新构造代码,以便摆脱for循环,而是传入最大迭代次数。在每次调用时减少该计数器。如果减量后,您的计数器大于零,请调用setTimeout来调用该函数再次暂停。通常在JavaScript中通过调用setTimeout来处理此问题,将延迟后要执行的代码传递给setTimeout。或者换句话说,不是在函数中暂停,而是将函数分成两部分:一部分在延迟前执行,另一部分在延迟后执行
您已经通过setTimeout递归调用了您的函数,所以您就快到了。请查看是否可以重新构造代码,以便摆脱for循环,而是传入最大迭代次数。在每次调用时减少该计数器。如果减量后,您的计数器大于零,请调用setTimeout来调用该函数再次单击。此操作非常有效,muntoo's没有真正起作用,因为浏览器在执行此操作时冻结,因此图像更改甚至不可见。此操作非常有效,muntoo's没有真正起作用,因为浏览器在执行此操作时冻结,因此图像更改甚至不可见。
function pause(ms)
{
var d = new Date();
var c = null;
do
{
c= new Date();
}
while(c - d < ms);
}