2016-12-17 7 views
1

Ich weiß nicht, wo das Problem Punkt ist ... (TT)Warum läuft mein setInterval nur einmal?

Skript

<script type="text/javascript"> 
function printTime(arg) { 
    var mydate = new Date(); 
    document.getElementById(arg).innerHTML = mydate; 
} 
function startTimer(arg) { 
    setInterval(printTime(arg), 1000); 
} 
</script> 

HTML ist

<body onload="startTimer('timer')"> 
    <h1 id="timer"> 
    </h1> 
</body> 
+2

Sie rufen die Funktion, nicht 'setInterval (function() {print (arg);}, 1000); Referenzierung' – epascarello

+0

Dank für Ihre schnelle und genaue Antwort danken. – Minime

Antwort

0

Sie ausführen nur die Funktion Anfangs und setzen Sie den zurückgegebenen Wert als Argument stattdessen eine Callback-Funktion.

<body onload="startTimer('timer')"> 
 
    <h1 id="timer"> 
 
    </h1> 
 
</body> 
 

 

 
<script type="text/javascript"> 
 
    function printTime(arg) { 
 
    var mydate = new Date(); 
 
    document.getElementById(arg).innerHTML = mydate; 
 
    } 
 

 
    function startTimer(arg) { 
 
    setInterval(function() { 
 
     printTime(arg) 
 
    }, 1000); 
 
    } 
 
</script>


Oder das Argument als this Kontext binden Function#bind Verfahren und in der Funktion verwenden Sie Wert von this erhalten.

<body onload="startTimer('timer')"> 
 
    <h1 id="timer"> 
 
    </h1> 
 
</body> 
 

 

 
<script type="text/javascript"> 
 
    function printTime() { 
 
    var mydate = new Date(); 
 
    document.getElementById(this).innerHTML = mydate; 
 
    } 
 

 
    function startTimer(arg) { 
 
    setInterval(printTime.bind(arg), 1000); 
 
    } 
 
</script>

+0

Vielen Dank für Ihre schnelle und genaue Antwort. – Minime

+0

Wirklich danke für Erklärung für bind. es ist cool! – Minime