【问题标题】:More logical setTimeout routine更合乎逻辑的 setTimeout 例程
【发布时间】:2015-03-10 14:47:25
【问题描述】:

我创建了一个简单的朗读功能,可以在特定时间突出显示单词。到目前为止,我是这样做的:

            setTimeout(function(){ 
           $(".page3 > p >*:contains('The')").css('background',textColor)
            }, 400);

            setTimeout(function(){ 
               $('.word').css('background',transparent)
               $(".page3 > p >*:contains('dog')").css('background',textColor)
            }, 1000);

            setTimeout(function(){ 
              $('.word').css('background',transparent)      
              $(".page3 > p >*:contains('was')").css('background',textColor)
            }, 1700);

我的问题是他们会是更好的方法吗? 我不能使用循环,因为每个单词和是不同的,单词的时间也非常不同。

编辑:我曾考虑过使用数组。键可以是单词,值可以是时间(毫秒)。我只是不确定我怎么能做到这一点?它需要某种形式的循环吗?

【问题讨论】:

  • 你有 jsfiddle
  • 我没有。有什么需要我详细解释的吗?
  • 您的代码是否有效 - 如果可以,我们可以看到它。我会用空格分割字符串,但我不知道你做了什么
  • 您可以稍微简化一下,但不要过多。我会将重复的部分变成独立的函数,并可能将浮动函数压缩为对象成员,但您仍然需要 function(){} 开销和每个规范的 setTimeout 间隔......
  • 它确实有效,但它是一个庞大的项目(JS 中大约 3000 行代码)所以很难分离并放入 JS Fiddle。基本上,页面上的每个单词都是不同的跨度,每个单词都有“单词”类。这些超时在单击按钮时运行,并且单词开始突出显示。 (因此为什么我使用“包含”来定位每个单词)。如果您需要更多详细信息,请告诉我

标签: javascript timeout


【解决方案1】:

这是给你的 jsfiddle

JSFIDDLE

changeWord('Lorem','text',1000);

基本上可以通过在函数中实现 setTimeout 来解决,因此您不必总是一遍又一遍地编写相同的函数。

我个人建议为某些对象添加类并将此类用于 css。 jquery css 不是我的最爱 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多