【问题标题】:How to use javascript type effect forward and backward one by one with infinite setInterval如何使用无限setInterval向前和向后一一使用javascript类型效果
【发布时间】:2020-05-19 20:14:51
【问题描述】:

类型效果只是一一向前我需要用也一一向后的句子, 请查看我的 sn-p 并查看我想在我的 sn-p 中应用效果的控制台。

    let txt = 'I am from Bangladesh';
    let countForward = 0;
    let countBackward = txt.length;
    const setUpdate =   setInterval(function(){
        if(countForward >= txt.length){
            countBackward--;
            if(countBackward <=0){
                countBackward = 0;
            } else{
                let slice = txt.slice(txt.length, countBackward);
                
            }
        } else {
            countForward++;
        }

        let slice = txt.slice(0,countForward);
        console.log(countBackward)
       

        demo.innerHTML = slice;
        let sliceback = txt.length;
        
    },100)
 &lt;div id="demo"&gt;

还需要我尝试过但不明白我该怎么做的无限 setInterval。

【问题讨论】:

    标签: javascript effect


    【解决方案1】:

    不要使用两个单独的计数器,而是使用一个计数器和一个指示方向的布尔标志。

    查看解决方案:

    const txt = 'I am from Bangladesh';
    let countingUp = true;
    let count = 0;
    const setUpdate = setInterval(function() {
      if (count > txt.length) {
        countingUp = false;
        count -= 2;
      } else if (count < 0) {
        countingUp = true;
        count += 2;
      }
    
      demo.innerHTML = txt.slice(0, count);
      count += countingUp ? 1 : -1;
    }, 100)
    &lt;div id="demo"&gt;

    【讨论】:

    • 太棒了,你能告诉我,当 count==txt.length 比再次运行时稍有停顿,我尝试了 setTimeout 但不起作用
    • 那是因为它在count = txt.lengthcount = 0 时运行了两次。您可以通过跳过其中一个来解决问题。更新了答案。
    • 谢谢,我尝试了 `if(count > Number(txt.length + 10))`,因为 txt.length 的延迟加了 10。你的概念很棒
    猜你喜欢
    • 2014-02-02
    • 2011-11-28
    • 2011-10-22
    • 1970-01-01
    • 2015-12-14
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多