javascript - native JavaScript 中的动画输入

标签 javascript settimeout

我尝试创建动画打字/删除效果。它确实会打字,但当它完成第一句话时,它不会做任何其他事情。看起来它被困在第一个 if 语句中。

window.onload = () => {
  const sentences = ['Who am I?', 'Who are you?', 'Who are we?'];
  const input = document.getElementsByName('q')[0];

  let sentence = 0;
  let character = 0;
  let typing = true;

  (function typing() {

    if (character === sentences[sentence].length - 1) {
      typing = false;
    } else if (character === 0) {
      if (sentence < sentences.length - 1) {
        sentence++;
      } else {
        sentence = 0
      }
      typing = true;
    }

    if (typing) {
      character++;
    } else {
      character--;
    }

    input.placeholder = sentences[sentence].substring(0, character);

    setTimeout(typing, ~~(Math.random() * (300 - 60 + 1) + 60));
  })();

};

最佳答案

您在函数本身中重写函数,setTimeout 接收一个 bool 值作为第一个参数

对于函数名称,最好使用像 typeSentence
这样的动词 对于 bool 值,最好使用像 isTyping

这样的问题

关于javascript - native JavaScript 中的动画输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38305952/

相关文章:

javascript - IE8 中的设置超时问题

javascript - 页面加载后呈现部分 Handlebars (HBS)

javascript - 是否可以对多个 array.indexOf 使用 switch case

javascript - 是否可以为我站点上的所有 jQuery 验证使用站点范围的默认设置?

javascript - setTimeout() 无法正确调用嵌套函数

javascript - 如何将更改的参数传递给setTimeout?

javascript - mapStateToProps 从 reducer 返回未定义的状态

javascript - 将 Bootstrap 模板与普通 Web 组件一起使用

javascript - $(this) 在 animate() 回调中但带有 setTimeout

javascript - jquery 1分钟后发送 $POST 到服务器