Heim  >  Fragen und Antworten  >  Hauptteil

Probleme mit setTimeout und addEventListener

Dies ist Code, der auf einem Rookie geschrieben wurde.

setTimeout, egal wie lange es eingestellt ist, innerHtml zeigt direkt das Endergebnis an.

Warum ist das so? ;

<head>

<meta charset="utf-8">

<title>Rookie-Tutorial (runoob.com)</title>

</head>

< body>

Das Dokument fügt einen onmousemove-Ereignishandler hinzu, der Zufallszahlen anzeigt, wenn die Maus im Dokument bewegt wird.

Klicken Sie auf die Schaltfläche, um den Event-Handler zu entfernen.

<button id='demo1'>click me</button>

<p id="demo">

<script>

document.getElementById("demo1") ("click", myFunction);

var time = 5;

function myFunction() {

document.getElementById("demo").innerHTML = time;

removeHandler(time);

}

function removeHandler(i) {

i--;

document.getElementById("demo").innerHTML = i;

setTimeout(removeHandler(i),1000);

}

</script>

</body>

</html>

hhhh1560 Tage vor1153

Antworte allen(1)Ich werde antworten

  • 天蓬老师

    天蓬老师2020-07-17 19:57:46

    setTime()的回调函数是异步执行,只有主调用栈清空才会从任务队列进入调用栈,所以就会出现你说的这种情况

    Antwort
    0
  • StornierenAntwort