为什么我不能每隔几秒就调用一次我的函数?

时间:2015-02-09 19:14:47

标签: javascript jquery html

我试图每隔几秒调用一次函数,如下所示:

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");
}

问题是这没有被触发;那么,我错过了什么,或做错了什么?

或者,有没有更好的方法来做我想做的事情?

3 个答案:

答案 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");
}

JS Fiddle Demo

注意

setTimeoutsetInterval只能在设置时间开始。如果您希望立即执行该功能,您可以执行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");
}

JS Fiddle Demo

答案 1 :(得分:0)

.setTimeout()方法只运行一次。要定期运行(使用指定的超时间隔),请使用.setInterval()

答案 2 :(得分:-1)

尝试使用setInterval()代替。 这里是w3schools提供的信息。

&#34; setInterval()方法将等待指定的毫秒数,然后执行指定的函数,它将在每个给定的时间间隔继续执行该函数。&#34;