Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置此函数的超时事件,但它不工作_Javascript_Jquery - Fatal编程技术网

Javascript 设置此函数的超时事件,但它不工作

Javascript 设置此函数的超时事件,但它不工作,javascript,jquery,Javascript,Jquery,我无法使setTimeout事件适用于此代码。我尝试过各种配置,但没有运气。有人能告诉我我做错了什么吗 我试图一次打印出一个字符的lorem ipsum,但我想等几秒钟再开始 setTimeout( (function ($) { $.fn.writeText = function (content) { var contentArray = content.split(""), current = 0,

我无法使setTimeout事件适用于此代码。我尝试过各种配置,但没有运气。有人能告诉我我做错了什么吗


我试图一次打印出一个字符的lorem ipsum,但我想等几秒钟再开始

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

setTimeout具有以下签名:

setTimeout(function, timeout_in_ms);
在代码中,您有:

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

所以它甚至在语法上都不正确

,但运气不好这是什么意思?控制台上说什么?这意味着我无法让它工作。你知道怎么回事吗?你不能在setTimeout中包装一个jQuery插件,还有什么意义呢?不能让它工作不是一个好的描述。我们关心的问题是:您看到了什么错误消息?;你在期待什么?你得到了什么?。您发布的代码甚至在语法上都无效,因此您的控制台应该显示解析器的错误消息。您不会在任何地方停止setInterval,因此您的代码将一直运行,直到您离开/刷新页面。好的,谢谢!那么,如何实现此设置超时效果呢?请将所有语句包装到另一个函数中。@mc0117如果您能解释代码应该完成的任务,这也会有所帮助。我试图一次打印一个字符,但我想在开始之前等待几秒钟。@mc0117-将整个插件包装到另一个函数中超时不是这样做的。仅包装实现插件的行,即代码中的最后一行。