0

私は一生懸命努力してきましたが、今こそ助けを求める時だと思います...かなり基本的なことのように聞こえますが...

3秒間隔でスパン内の1つの配列から要素ごとに要素を表示したい。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 に答える