Warum funktioniert das Set Timeout von JavaScript nicht? [closed]

Lesezeit: 2 Minuten

Benutzer-Avatar
James Dorfmann

Ich versuche, setTimeout zu verwenden, aber es funktioniert nicht. Jede Hilfe ist willkommen.

Weiß jemand, wie man das beheben kann?

var button = document.getElementById("reactionTester");
var start  = document.getElementById("start");

function init() {
    var startInterval/*in milliseconds*/ = 1000;
    setTimeout(startTimer(), startInterval);
}

function startTimer() {
    document.write("hey");
}

  • Lernen wie man debuggen JavaScript. Sie versuchen, auf ein DOM-Element zuzugreifen, bevor es existiert. Bitte lesen Sie Warum funktioniert jQuery oder eine DOM-Methode wie z getElementById das Element nicht finden?. Und bitte erklären was genau funktioniert nicht.

    – Felix Klinge

    2. Januar 2014 um 20:10 Uhr


  • mögliches Duplikat von Warum wird die Methode sofort ausgeführt, wenn ich setTimeout verwende?

    – Felix Klinge

    2. Januar 2014 um 20:14 Uhr

Benutzer-Avatar
Matt Catellier

Wenn Sie in einer Situation sind, in der Sie Parameter an die Funktion übergeben müssen, die Sie nach dem Timeout ausführen möchten, können Sie die “benannte” Funktion in eine anonyme Funktion einschließen.

dh funktioniert

setTimeout(function(){ startTimer(p1, p2); }, 1000);

dh wird nicht funktionieren, weil es die Funktion sofort aufruft

setTimeout( startTimer(p1, p2), 1000);

  • Was ist, wenn Sie eine Variable übergeben müssen?

    – Jeff

    14. Mai 2015 um 18:04 Uhr

  • @Jeff – Kannst du das näher erläutern?

    – j08691

    14. Mai 2015 um 18:34 Uhr

  • Entschuldigung, das war schlecht formuliert. Ich habe herausgefunden, was ich zu tun versuchte … Ich habe versucht, eine Funktion zu übergeben, die als erstes Argument eine Variable benötigt. Ich habe es einfach in eine anonyme Funktion gepackt.

    – Jeff

    14. Mai 2015 um 18:35 Uhr

Benutzen:

setTimeout(startTimer,startInterval); 

Sie rufen startTimer() auf und geben das Ergebnis (das nicht definiert ist) als Argument an setTimeout() weiter.

Benutzer-Avatar
Benutzer126587

Wenn Sie einen Parameter an die verzögerte Funktion übergeben möchten:

    setTimeout(setTimer, 3000, param1, param2);

Benutzer-Avatar
Glen Ferrie

Bitte ändern Sie Ihren Code wie folgt:

<script>
    var button = document.getElementById("reactionTester");
    var start = document.getElementById("start");
    function init() {
        var startInterval/*in milliseconds*/ = Math.floor(Math.random()*30)*1000;
        setTimeout(startTimer,startInterval); 
    }
    function startTimer(){
        document.write("hey");
    }
</script>

Mal sehen, ob das hilft. Grundsätzlich besteht der Unterschied darin, dass auf die Funktion „startTimer“ verwiesen wird, anstatt sie auszuführen.

1010100cookie-checkWarum funktioniert das Set Timeout von JavaScript nicht? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy