0

仍然是 JS 和 jQuery 的新手,并且拥有我认为可以简单解决我遇到的问题的方法。我有一个在文档准备好后正在运行的函数,这个函数正在淡入数据然后淡出,但是当它到达这些结果的末尾时,没有其他任何东西出现。我只想循环该函数,以便不断显示这些结果。我可能让这听起来比它需要的更令人困惑,所以这就是我所拥有的......

    function shuffle(array) {
        var currentIndex = array.length;
        var temporaryValue;
        var randomIndex;
        while (0 !== currentIndex) {
            randomIndex = Math.floor(Math.random() * currentIndex);
            currentIndex -= 1;
            temporaryValue = array[currentIndex];
            array[currentIndex] = array[randomIndex];
            array[randomIndex] = temporaryValue;
        }
        return array;
    }

    var feedbackContainer = $(".feedback-container");
    var feedbackMessage;

    function getData(data) {

        if (data.ok) {
            var dataResults = shuffle(data.results);
            for (var i = 0; i < dataResults.length; i++) {
                feedbackMessage = dataResults[i].message;
                if(feedbackMessage) {
                    var review = $("<p />").text(feedbackMessage);
                    feedbackContainer.append(review);
                }
            };
        }
    }

    $(function(){
        $('.feedback-container p').each(function(index) {
            $(this).delay(7000*index).fadeIn(1000).delay(5000).fadeOut(1000);
        });
    })
4

1 回答 1

1

如果我对您的理解正确(有时我的吸收速度有点慢),有几种简单的方法可以制作函数循环。一个是最后有函数调用本身。

function foo() {
    // Do a bunch of stuff
    foo();
}

甚至更好的是,使用 setInterval 这样您就可以让它根据需要运行。

var bar = setInterval(foo, 1000); //runs every second

clearInterval(bar); //when you want it to stop

我希望这会有所帮助

您可以创建一个循环函数来调用您的 getData 并重复绘制。所以说你在这个叫做循环的函数上设置了间隔。

function loop() {
    getData(); //So you know the data is up to date.
    drawData(); //Your fadeIn/fadeOut script.
    //And if necessary 
    clearData();
}

这将循环检索数据并显示它。这有帮助吗?

于 2013-09-25T05:31:31.363 回答