2012-03-01 69 views
1

这就是我试图做FOR循环内的setInterval?

for (i=1; i<=1000; i+=100) { 
setInterval(someFunction, i); 
} 

我想实现的是,当页面加载对话框将会出现和它的影子会闪动慢,然后快速将停止当i = 1000。 我是新手,迄今为止,我做了this

+2

太糟糕了。如果您告诉我们什么不起作用以及您得到了哪个错误,我们可能会帮助您。 – 2012-03-01 01:59:57

+0

你的意思是“它没有解决”?如果你在问题中没有提供足够的细节,我们不能提供帮助 - 你需要说明为什么它不起作用;你想要什么样的行为以及你想要做什么样的行为。 – Bojangles 2012-03-01 02:00:18

+0

你想完成什么?它怎么没用? – 2012-03-01 02:00:36

回答

2

阅读是否有可能或不?

是的。假设someFunction是对函数或包含JavaScript代码的字符串的引用,for循环将按原样“工作”,其中“work”的意思是“不给出语法错误,但几乎肯定不会达到我想象中的真正想要的效果”。

setInterval() function调用你通过它的函数重复,每次调用之间有一个固定的(受浏览器怪癖)延迟。只要该页面处于打开状态,或者直到您使用clearInterval()来取消该功能,它都会一直调用该功能。

所以通过在循环中调用setInterval()您正在设置(在您的情况下)10个独立的时间间隔,所有这些时间间隔都会重复调用您的函数。第一个调用someFunction的时间间隔为0ms,这比浏览器实际使用的时间要小,所以会被舍入到更多像4ms。第二个间隔将以100ms间隔呼叫someFunction。第三个以200ms的间隔调用该函数。等等。在你的循环结束后,你的函数每秒会被重复调用的次数比我可以计算的更多。

看起来你真正想要做的事情是拨打someFunction() 10次,每次通话之间延迟100ms。如果是这种情况,则可以在循环中使用setTimeout() function,因为(每次使用)setTimeout()都会在指定的延迟后恰好调用您的函数一次。

+0

我是新手,你能告诉我什么是'setTimeOut()' – FoxKllD 2012-03-01 02:58:15

+0

我已经告诉你了。在我的回答结束时说,'setTimeout()'将“在指定的延迟之后恰好调用你的函数一次”,而'setInterval()'将反复调用你的函数。查看我链接到的MDN页面在我的答案中。 – nnnnnn 2012-03-01 03:20:04

1

您不需要将循环中的设置间隔设置为多次运行。

试图通过本教程javascript.info

+0

这恰好也是一个不好的例子。将一串JS代码传递给'setInterval'是20世纪90年代。我认为即使这样很糟糕。我们只是不知道更好。 :P – cHao 2012-03-01 02:27:49

+0

@cHao - 如果返回足够远的话,传递一个字符串是唯一的选择。 – nnnnnn 2012-03-01 02:51:56

+0

对不起,我没有意识到w3schools是如此糟糕的资源。 – user1239299 2012-03-01 03:05:48