Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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_Wordpress_Delay - Fatal编程技术网

在Javascript中进行延迟

在Javascript中进行延迟,javascript,wordpress,delay,Javascript,Wordpress,Delay,我正在开发WordPress插件。它的一个特性是使用按类隐藏和显示文本段 这个功能很有效,但我一直希望通过让文本片段一次显示一个字母(当然很快)来增强它,就好像它们被很快地打印出来一样,而不是一次一大块地打印出来 我知道这类事情有很多动画。。。也许这是一个更好的解决方案,但我一直在努力保持它。但功能不是真正的图形或“动画”为导向;我的目的不仅仅是让基于文本的功能看起来更漂亮 我已经得到了代码中一个字符一个字符地构建每个文本段的部分,但是我试图在每个字符之间插入一个非常短的延迟(5-10毫秒),这

我正在开发WordPress插件。它的一个特性是使用
按类隐藏和显示文本段

这个功能很有效,但我一直希望通过让文本片段一次显示一个字母(当然很快)来增强它,就好像它们被很快地打印出来一样,而不是一次一大块地打印出来

我知道这类事情有很多动画。。。也许这是一个更好的解决方案,但我一直在努力保持它。但功能不是真正的图形或“动画”为导向;我的目的不仅仅是让基于文本的功能看起来更漂亮

我已经得到了代码中一个字符一个字符地构建每个文本段的部分,但是我试图在每个字符之间插入一个非常短的延迟(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