在Javascript中进行延迟
我正在开发WordPress插件。它的一个特性是使用在Javascript中进行延迟,javascript,wordpress,delay,Javascript,Wordpress,Delay,我正在开发WordPress插件。它的一个特性是使用按类隐藏和显示文本段 这个功能很有效,但我一直希望通过让文本片段一次显示一个字母(当然很快)来增强它,就好像它们被很快地打印出来一样,而不是一次一大块地打印出来 我知道这类事情有很多动画。。。也许这是一个更好的解决方案,但我一直在努力保持它。但功能不是真正的图形或“动画”为导向;我的目的不仅仅是让基于文本的功能看起来更漂亮 我已经得到了代码中一个字符一个字符地构建每个文本段的部分,但是我试图在每个字符之间插入一个非常短的延迟(5-10毫秒),这
按类隐藏和显示文本段
这个功能很有效,但我一直希望通过让文本片段一次显示一个字母(当然很快)来增强它,就好像它们被很快地打印出来一样,而不是一次一大块地打印出来
我知道这类事情有很多动画。。。也许这是一个更好的解决方案,但我一直在努力保持它。但功能不是真正的图形或“动画”为导向;我的目的不仅仅是让基于文本的功能看起来更漂亮
我已经得到了代码中一个字符一个字符地构建每个文本段的部分,但是我试图在每个字符之间插入一个非常短的延迟(5-10毫秒),这样效果实际上是可见的。我根本无法让setTimeout函数工作;谁能给我一些建议吗
为了简单起见,我只是将这部分文字包括在内;如果需要更多的上下文,请告诉我。下面是FOR循环,它遍历名为cols[]的数组的每个元素,并按字符显示数组中的每个元素。此代码有效,但从未观察到延迟
numberofSnippets = the size of the array cols[]
for (c = 0; c < numberofSnippets; c++)
{
h=0;
currentshown = '';
snippet = cols[c].textContent;
sniplength = snippet.length;
(function addNextCharacter()
{
onecharacter = snippet.charAt(h);
currentshown = currentshown.concat(onecharacter);
cols[c].textContent = currentshown;
h=h+1;
if (h < sniplength) {window.setTimeout(addNextCharacter, 200); }
})();*/
}
}
}
numberofSnippets=数组cols[]的大小
对于(c=0;c
好吧,一个问题是您将超时设置为0,这意味着实际上是“下一个滴答声”。例如,如果需要5秒的延迟,则需要在其中输入5000作为第二个参数 代码中有一些奇怪的地方阻止了setTimeout按预期执行,这主要是因为闭包重用了循环中的变量,因为循环不会等待IIFE以setTimeout递归执行完毕。我通过将这些变量移动到传递给addNextCharacter的参数来解决这个问题
var cols=document.getElementsByClassName('foo');
var numberofSnippets=cols.length;
对于(var c=0;c
苹果公司
香蕉
橙色
您的代码中有一些奇怪的地方阻止了setTimeout按预期执行,主要是因为闭包重用了循环中的变量,因为循环不会等待IIFE以setTimeout递归执行完毕。通过将这些变量移动到传递给addNextCharacter的参数,我解决了这个问题。
setTimeout
接受毫秒作为第二个参数,并且5-10ms不可见,您可能希望传入类似200的内容,然后从那里开始。谢谢-只是更新了文本以反映这一点。我尝试了1000以下的数字,但没有延迟。下面是在上面和下面建议的更新之后的更多信息:当我单步执行此代码时,它第一次到达“if(h