JavaScript SetTimeout () werkt niet

Hallo Ik probeer de functie SetTimeout () in Javascript te gebruiken, behalve dat het niet werkt. Alvast bedankt aan iedereen die kan helpen.

<!DOCTPYE html>
<html>
<head>
    <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>
</head>
<body>
<form id="form">
    <input type="button id=" reactionTester" onclick="stopTimer()">
    <input type="button" value="start" id="start" onclick="init()">
</form>
</body>
</html>

Antwoord 1, Autoriteit 100%

Deze regel:

setTimeout(startTimer(), startInterval); 

U aanroepen startTimer(). In plaats daarvan moet je het doorgeven als een functie die moeten worden ingeroepen , zoals SO:

setTimeout(startTimer, startInterval);

Antwoord 2, Autoriteit 20%

Als u in een situatie bent waarin u parameters moet doorgeven aan de functie die u na time-out wilt uitvoeren, kunt u de functie “Benoemde” in een anonieme functie inpakken.

d.w.z. Werkt

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

d.w.z. Werkt niet omdat het de functie meteen zal bellen

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

Antwoord 3, Autoriteit 10%

twee dingen.

  1. Verwijder de haakjes in setTimeout(startTimer(),startInterval);. Houden van de haakjes roept de functie onmiddellijk op.

  2. Uw StartTimer-functie overschrijft de pagina-inhoud met uw gebruik van document.write(zonder de bovenstaande fix) en wijst het script en HTML in het proces uit.


Antwoord 4, Autoriteit 4%

Als u een parameter wilt doorgeven op de vertraagde functie:

   setTimeout(setTimer, 3000, param1, param2);

Antwoord 5

Gebruik:

setTimeout(startTimer, startInterval);

U belt Starttimer () en voer het resultaat (dat is niet gedefinieerd) als een argument voor insteltijd ().


Antwoord 6

Wijzig uw code als volgt:

<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>

Zie of dat helpt. Kortom, het verschil verwijst naar de functie ‘Starttimer’ in plaats van het uit te voeren.


Antwoord 7

Om weinig gemakkelijker te maken om gebruik zoals hieronder te begrijpen, die ik het meest de voorkeur geven. Ook wordt het vergemakkelijkt om meerdere functie tegelijk te bellen. Uiteraard

setTimeout(function(){
      startTimer();
      function2();
      function3();
}, startInterval);

Other episodes