JavaScript - jQuery 间隔
我正在使用 JavaScript 和 jQuery。我有以下脚本每 30 秒提醒 hi
一次。
$(document).ready( function() {
alert("hi");
setInterval(function() {
alert("hi");
}, 30000);
});
我想在页面加载时(当文档/页面完全加载时)以及之后每隔 30 秒的时间间隔发出警报 hi
(例如 hi
(0s) - hi
(30秒)-嗨
(60秒)..等)。但我的解决方案适用于两个实例。一个在 DOM 上就绪,另一个在循环中。有什么方法可以在单个实例中执行相同的操作吗?
您可以在此处查看我的小提琴。
I am using JavaScript with jQuery. I have the following script to alert hi
every 30 seconds.
$(document).ready( function() {
alert("hi");
setInterval(function() {
alert("hi");
}, 30000);
});
I want to alert hi
when the page loads (when document / page gets completely loaded) and on every 30 seconds interval afterwards (like hi
(0s) - hi
(30s) - hi
(60s).. etc). But my solution works on two instances. One on DOM ready and the other in a loop. Is there any way to do the same in a single instance?
You can see my fiddle here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以改用 setTimeout 并让回调本身重新安排时间。
You could use setTimeout instead and have the callback reschedule itself.
将您的代码包装在函数中。然后,将该函数作为第一个参数传递给
setInterval
,并调用该函数:Wrap your code in a function. Then, pass the function as a first argument to
setInterval
, and call the function:嗯,可能有一种方法只需一次调用即可完成此操作。
另一种解决方案是使用arguments.callee,但由于它现在已被弃用,因此通常不建议使用它。
Well, there probably is a way of doing it in just one call..
Another solution would be to use arguments.callee, but as it is now deprecated, it is generally not recommended to use it.
不,
setInterval
不可能做到这一点。您可以使用 setTimeout 例如:No, that's not possible with
setInterval
. You could use setTimeout for example:如果您希望它仅在 30 秒后运行一次,您需要使用
setTimeout
而不是setInterval
。If you want it to only run once after 30 seconds, you are looking to use
setTimeout
notsetInterval
.