【发布时间】:2022-01-19 18:35:15
【问题描述】:
我尝试拆分所有字母并在超时时一一显示。我找到了一些解决方案,但它们似乎不适合我。
此脚本会附加一个完整的层(单词),但会跳过每个循环。消息是一个名为 Hello! 的字符串!
Plugin.prototype.message = function(message) {
var word = '<div class="word">';
var letters = message.toString().split('');
$.each(letters, function (i, letter) {
//alert displays letter properly one by one
setTimeout(function () {
word += letter;
}, 30);
});
word += '</div>';
$('#chat-layer').append(word);
$('.word').animate({
opacity: 1
}, 200 );
}
有没有人知道如何解决这个问题?
【问题讨论】:
-
好吧,
word += letter只是将letter添加到word;它不会更新 HTML。您需要在循环中更新 HTML。 -
如上:您只有在更改了 html 后才创建单词。它不是“跳过每个循环” - 它稍后会运行内容,正如您使用 setTimeout 所请求的那样。您需要一次将每个字母添加到 html 中,而不是一次添加一个单词。这是您的代码更新为一次 1 个字母:jsfiddle.net/uyv4c1bs