我试图每隔几秒调用一次函数,如下所示:
HTML:
<div id="Result">Click here for the message.</div>
JS:
$(document).ready(function () {
$("#Result").click(function () {
var timeout = setTimeout(function () {
$('post').each(function () {
dater();
});
}, 3000);
});
});
function dater() {
$("#Result").text("hi");
}
问题是这没有被触发;那么,我错过了什么,或做错了什么?
或者,有没有更好的方法来做我想做的事情?
答案 0 :(得分:2)
问题#1
你没有在JS Fiddle演示中包含jQuery。
问题#2
setTimeout
只执行一次,除非它自己调用。要么这样做,要么使用setInterval
,每隔x毫秒执行一次。
此外,HTML中没有<post>
元素,而是使用类。还包括它在小提琴中或它不会工作。
$(document).ready(function () {
$("#Result").click(function () {
var timeout = setInterval(function () {
$('.post').each(dater);
}, 3000);
});
});
function dater() {
$("#Result").text("hi");
}
注意强>
setTimeout
和setInterval
只能在设置时间后开始。如果您希望立即执行该功能,您可以执行this。
让我们走得更远
如其他答案所述,使用setTimeout
可能是更好的选择。以下是如何执行此操作的示例:
var timeout;
$(document).ready(function () {
$("#Result").click(daterForEachPost);
});
function daterForEachPost() {
$('.post').each(dater);
// The function will call itself every 3000 ms
timeout = setTimeout(daterForEachPost, 3000);
}
function dater() {
$("#Result").text("hi");
}
答案 1 :(得分:0)
.setTimeout()
方法只运行一次。要定期运行(使用指定的超时间隔),请使用.setInterval()
。
答案 2 :(得分:-1)
尝试使用setInterval()代替。 这里是w3schools提供的信息。
&#34; setInterval()方法将等待指定的毫秒数,然后执行指定的函数,它将在每个给定的时间间隔继续执行该函数。&#34;