暂停并恢复javascript中的setInterval

沉睡的地质学家

我试图模仿JavaScriptcodility主页上的打字效果,我已经使用setInterval()实现了打字和删除效果。

这是它的jsfiddle:https ://jsfiddle.net/yzfb8zow/

var span=document.getElementById("content");
var strings=["hello world","how r u??"];

var index=0;    //get string in the strings array
var chIndex=0;  //get char in string
var type=true;

setInterval(function(){
  if(index===strings.length)
    index=0;
  if(type){
    typeIt();
  }
  else
    deleteIt();
},200);

// type the string
function typeIt(){
  if(chIndex<strings[index].length)
    span.innerHTML=strings[index].substring(0,chIndex++);
  else
    type=false;
}

//delete the string
function deleteIt(){
  if(chIndex===0){
    index++;
    type=true;
  }
  else
    span.innerHTML=strings[index].substring(0,chIndex--);
}

HTML

<span id="content"></span>
<span id="cursor">|</span>

的CSS

#cursor{
  -webkit-animation: 1s blink step-end infinite;
  -moz-animation: 1s blink step-end infinite;
  animation: 1s blink step-end infinite;
}

@keyframes blink {
  from, to {
    opacity:0;
  }
  50% {
    opacity: 1;
  }
}

@-moz-keyframes blink {
  from, to {
    opacity:0;
  }
  50% {
    opacity:1;
  }
}

@-webkit-keyframes blink {
  from, to {
    opacity:0;
  }
  50% {
    opacity:1;
  }
}

我无法理解的是如何在字符串更改的开头和结尾处暂停setInterval函数,以使光标清晰闪烁。

我查找了其他答案暂停并恢复setInterval以及如何在javascript中停止window.setInterval?但是我无法理解如何在这种情况下使用它。

如果您能告诉我如何改进我的代码,那也很好。

阿特里凡

我编辑了您的代码,这里是您的jsfiddle:https ://jsfiddle.net/yzfb8zow/5/

还有一点代码解释

var typingFunction = function() {
  if (index === strings.length) {
    index = 0;
  }

  if (type) {
    typeIt();
  } else {
    deleteIt();
  }
}

我声明了您以前的键入函数,以后可以根据需要使用它了。

var x = setInterval(typingFunction.bind(typingFunction), 200);

存储间隔,以便以后可以清除它-存储在全局变量中(不一定可以,有其他解决方案,但可以存储)。

function typeIt() {
 if (chIndex == -1) {
    chIndex += 1;
    clearAndRestartInterval(1000);
    return;
  }


  if (chIndex <= strings[index].length) {
    span.innerHTML = strings[index].substring(0, chIndex++);
  } else {
    clearAndRestartInterval(1000);
    type = false;
    return;
  }
}

在typeIt函数中,我从chIndex = -1开始清除间隔,请稍等片刻,以便让光标闪烁,然后重新开始间隔。然后,我在字符串末尾再次清除它。我的chIndex从-1开始,所以我知道何时开始闪烁。

其余代码不言自明。

随时编辑clearAndRestartInterval函数的参数,以设置开始和结束处的闪烁时间。

function clearAndRestartInterval(timeOfRestart) {
    clearInterval(x);
    setTimeout(function() {
      x = setInterval(typingFunction.bind(typingFunction), 200);
    }, timeOfRestart);
}

最后但并非最不重要的是间隔的停止和重新启动功能。这非常简单,并且x-是先前声明的setInterval-全局值,我会在一段时间后以新的间隔进行清除和重置。

希望这可以帮助。

干杯

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

暂停并恢复javascript中的setInterval

来自分类Dev

暂停并恢复setInterval

来自分类Dev

javascript中的setInterval循环的定期暂停

来自分类Dev

知道setInterval中剩余的时间并将其应用于计时器的暂停和恢复

来自分类Dev

如何在JavaScript中暂停和恢复计时器?

来自分类Dev

如何在JavaScript中暂停和恢复多个setTimeout?

来自分类Dev

Libgdx中的暂停和恢复

来自分类Dev

Pygame 无法从暂停中恢复

来自分类Dev

暂停setInterval,但一旦停止则恢复其位置

来自分类Dev

如何使用javascript暂停和恢复gif

来自分类Dev

如何在Linux中暂停/恢复进程

来自分类Dev

如何暂停/恢复在YouTube视频中的下载?

来自分类Dev

在SparkStreaming中暂停和恢复KafkaConsumer

来自分类Dev

如何暂停/恢复在YouTube视频中的下载?

来自分类Dev

如何恢复我在AVplayer中暂停的视频?

来自分类Dev

javascript“ await”是否会立即暂停执行中的操作,并在解决诺言后立即恢复异步功能?

来自分类Dev

为JavaScript循环执行实现暂停和恢复机制

来自分类Dev

犀牛:能够暂停,保存状态和恢复javascript

来自分类Dev

具有暂停和恢复功能的Javascript倒计时

来自分类Dev

在javascript中无法恢复

来自分类Dev

暂停/恢复RX中的计时器/延迟

来自分类Dev

在Kivy中处理Android上的应用暂停/恢复

来自分类Dev

如何在Android中暂停和恢复录音

来自分类Dev

暂停/恢复在Node.js中执行的代码

来自分类Dev

在R中暂停和恢复插入符号训练

来自分类Dev

暂停和恢复如何在Android的协程中工作

来自分类Dev

在Kivy中处理Android上的应用暂停/恢复

来自分类Dev

Android:暂停并恢复活动中的线程

来自分类Dev

SpriteKit中的“暂停”按钮需要轻按几下才能恢复游戏

Related 相关文章

  1. 1

    暂停并恢复javascript中的setInterval

  2. 2

    暂停并恢复setInterval

  3. 3

    javascript中的setInterval循环的定期暂停

  4. 4

    知道setInterval中剩余的时间并将其应用于计时器的暂停和恢复

  5. 5

    如何在JavaScript中暂停和恢复计时器?

  6. 6

    如何在JavaScript中暂停和恢复多个setTimeout?

  7. 7

    Libgdx中的暂停和恢复

  8. 8

    Pygame 无法从暂停中恢复

  9. 9

    暂停setInterval,但一旦停止则恢复其位置

  10. 10

    如何使用javascript暂停和恢复gif

  11. 11

    如何在Linux中暂停/恢复进程

  12. 12

    如何暂停/恢复在YouTube视频中的下载?

  13. 13

    在SparkStreaming中暂停和恢复KafkaConsumer

  14. 14

    如何暂停/恢复在YouTube视频中的下载?

  15. 15

    如何恢复我在AVplayer中暂停的视频?

  16. 16

    javascript“ await”是否会立即暂停执行中的操作,并在解决诺言后立即恢复异步功能?

  17. 17

    为JavaScript循环执行实现暂停和恢复机制

  18. 18

    犀牛:能够暂停,保存状态和恢复javascript

  19. 19

    具有暂停和恢复功能的Javascript倒计时

  20. 20

    在javascript中无法恢复

  21. 21

    暂停/恢复RX中的计时器/延迟

  22. 22

    在Kivy中处理Android上的应用暂停/恢复

  23. 23

    如何在Android中暂停和恢复录音

  24. 24

    暂停/恢复在Node.js中执行的代码

  25. 25

    在R中暂停和恢复插入符号训练

  26. 26

    暂停和恢复如何在Android的协程中工作

  27. 27

    在Kivy中处理Android上的应用暂停/恢复

  28. 28

    Android:暂停并恢复活动中的线程

  29. 29

    SpriteKit中的“暂停”按钮需要轻按几下才能恢复游戏

热门标签

归档