第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

等待函數(shù)完成后再再次調(diào)用它

等待函數(shù)完成后再再次調(diào)用它

臨摹微笑 2023-08-24 10:19:48
我正在嘗試使用 JS 創(chuàng)建鍵入文本的外觀。目前,該output函數(shù)創(chuàng)建一個(gè)新的 DOM 元素并typeText創(chuàng)建打字動(dòng)畫。這是代碼:function typeText(text, outputElement) {    var i = 0;    var paragText = "";    var interval = setInterval(function () {        paragText += text.charAt(i);        outputElement.innerText = paragText;        i++;        if (text.length == i)            clearInterval(interval);    }, 70)}function output(text, colour){    var outputElement = document.createElement("p");    outputElement.setAttribute("class", "output");    outputElement.setAttribute("style", "color: " + colour + ";");    var outputWrapper = document.getElementById("output");    outputWrapper.appendChild(outputElement);    typeText(text, outputElement);}output("Test output 1", "red");output("Test output 2", "green");output("Test output 3", "blue");    <!DOCTYPE html>    <html>        <head></head>        <body>            <div class = "output-wrapper" id = "output">            </div>        </body>    </html>加載頁面時(shí),所有 3 個(gè)動(dòng)畫同時(shí)發(fā)生。如何讓動(dòng)畫一個(gè)接一個(gè)地發(fā)生?
查看完整描述

2 回答

?
萬千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以在調(diào)用 a 時(shí)awaitfor a 。這樣,函數(shù)就變成了每次完成后都會(huì)被調(diào)用:PromisesetIntervalasync


async function typeText(text, outputElement) {

  var i = 0;

  var paragText = "";

  await new Promise(resolve => setInterval(function () {

    paragText += text.charAt(i);

    outputElement.innerText = paragText;

    i++;

    if (text.length == i)

      resolve();

  }, 70))

}


async function output(text, colour){

  var outputElement = document.createElement("p");

  outputElement.setAttribute("class", "output");

  outputElement.setAttribute("style", "color: " + colour + ";");

  var outputWrapper = document.getElementById("output");

  outputWrapper.appendChild(outputElement);

  await typeText(text, outputElement);

}


const init = async function() {

  const outStrs = [

    {text:"Test output 1",color:"red"},

    {text:"Test output 2",color:"green"},

    {text:"Test output 3",color:"blue"},

  ];

  for (i =0; i < outStrs.length; i++){         

    await output(outStrs[i].text, outStrs[i].color);     

  }

}();

<div class = "output-wrapper" id = "output"></div>


查看完整回答
反對(duì) 回復(fù) 2023-08-24
?
MM們

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊

setTimeout與數(shù)組的解決方案


var delay = 90; // Writing speed


var arr = [     // Text and color Array

    ['Lorem ipsum dolor', 'red'],

    ['Consectetur adipisicing', 'green'],

    ['Earum voluptas', 'blue'],

];


function typeText(text, outputElement) {

    var i = 0;

    var paragText = "";

    var interval = setInterval(function () {

        paragText += text.charAt(i);

        outputElement.innerText = paragText;

        i++;

        if (text.length == i)

            clearInterval(interval);

    }, delay)

}

function output(text, colour) {

    var outputElement = document.createElement("p");

    outputElement.setAttribute("class", "output");

    outputElement.setAttribute("style", "color: " + colour + ";");

    var outputWrapper = document.getElementById("output");

    outputWrapper.appendChild(outputElement);

    typeText(text, outputElement);

}


// Calculates setTimeout: Push the start time of each line in the array

var time = 0;

for (var i = 1; i < arr.length; i++) {

    time = time + delay + arr[i-1][0].length * delay;

    arr[i].push(time);

}


// Execute the writing process

var n = 0;

for (var i = 0; i < arr.length; i++) {

    setTimeout(() => {

        output(arr[n][0], arr[n][1]);

        n++;

    }, arr[i][2]);

}

<div class="output-wrapper" id="output">

</div>


查看完整回答
反對(duì) 回復(fù) 2023-08-24
  • 2 回答
  • 0 關(guān)注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)