-3

このコードで setTimeout イベントが機能しません。これをさまざまな構成で試しましたが、うまくいきませんでした。誰かが私が間違っていることを教えてもらえますか?

「lorem ipsum」を一度に 1 文字ずつ出力しようとしていますが、開始するまで数秒待ちたいと思います。

setTimeout(
    (function ($) {
        $.fn.writeText = function (content) {
            var contentArray = content.split(""),
                current = 0,
                elem = this;
            setInterval(function () {
                if (current < contentArray.length) {
                    elem.text(elem.text() + contentArray[current++]);
                }
            }, 40);
        };
    })(jQuery);

    $("#description").writeText("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate.");
, 3000);

解像度:

これが作業コードです。問題は、プラグイン全体がタイムアウトでラップされていたことです。解決策は、プラグインを実装した行のみをラップすることでした。答えてくれてありがとう@adeno!

(function ($) {
    $.fn.writeText = function (content) {
        var contentArray = content.split(""),
            current = 0,
            elem = this;
        setInterval(function () {
            if (current < contentArray.length) {
                elem.text(elem.text() + contentArray[current++]);
            }
        }, 40);
    };
})(jQuery);

setTimeout(function () {
    $("#description").writeText("Lorem ipsum dolor sit amet, consectetur adipisicing elit,     sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate.");
}, 3000);
4

1 に答える 1

3

setTimeout には次の署名があります。

setTimeout(function, timeout_in_ms);

コードには次のものがあります。

setTimeout(
    statement;
    statement;
    statement;
    , timeout_in_ms
);

したがって、構文的にも正しくありません

于 2013-03-11T03:40:12.647 に答える