0

我一直在努力,现在我觉得是时候寻求帮助了......即使这听起来很简单......

我想以 3 秒的间隔从一个数组中逐个显示元素。我对 jquery 回调不太熟悉。这是我最后一次尝试出售这个拼图:

        $("#lkDo").click(function () {

            var fullText = $("#theText").text();
            var arr = fullText.split(" ");

            for (i = 0; i < arr.length; i++) {

                window.setTimeout(function () {
                    $("#theText").html(arr[i]);
                }, 3000);

            }
        });

        <span id="theText">The text is here its a boy</span>
        <br />
        <a id="lkDo" href="#">Here</a>

有什么想法吗?

4

1 回答 1

1

由于关闭,您会得到意想不到的结果。此代码将修复它:

        for (i = 0; i < arr.length; i++) {

            (function(i) {
                window.setTimeout(function () {
                    $("#theText").html(arr[i]);
                }, 3000 * i);
            })(i);

        }

http://jsfiddle.net/HWFZS/

也可以使用递归来解决问题:

var arr = ['a', 'b', 'c', 'd'],
    i = 0;

var changeText = function() {
    setTimeout(function() {
        $("#theText").html(arr[i]);
        i++;

        if (i < arr.length) {
            changeText();
        }
    }, 3000);
};

changeText();​

http://jsfiddle.net/HWFZS/1/

但我个人更喜欢第一个解决方案

于 2012-05-25T03:28:14.317 回答