2017-12-18 2 views
1

Ich versuche, ein leeres Spiel eher wie candy box zu machen. Ich werde eine Zahl an der Seite der Seite haben, die jede Sekunde um eins ansteigt. Der unten gezeigte Code scheint jedoch nicht zu funktionieren. Kann mir jemand sagen, warum es nicht funktioniert? wie man es repariert und woher sie ihre Informationen bekommen haben. Vielen Dank im Voraus.Wie integrieren Sie eine inkrementierende Variable in einen Absatz

<script type="text/javascript"> 
var i = 0; 

function increment(){ 
    i++; 
    document.getElementById('money').innerHTML = i; 
} 

setInterval(increment(), 1000); 
</script> 
     <h2><u>The best game of the century</u></h2> 
     <p>you have &#163;<span id="money"></span>.</p> 
    </body> 
</html> 
+1

es funktioniert nicht, weil Sie anrufen 'increment' in Ihrem Aufruf zum' setInterval' - - BEARBEITEN: war vielleicht nicht klar genug: 'setInterval' erwartet die Definition einer Funktion, aber statt dessen läuft die Funktion, die sie einmal ausführt – Felipe

+0

Welcher Teil funktioniert nicht? Erhalten Sie eine Fehlermeldung? Wenn ja, was sagt es? – freginold

+0

Auch Ihre HTML-Tags sind falsch – Felipe

Antwort

4

Sie haben zwei Probleme:

  1. Sie rufen das Skript vor dem DOM gerendert wird, an der Stelle, so das Skript ausgeführt wird, gibt es kein Element mit der ID von money ist. In Ihrem setInterval Aufruf benötigen Sie nur den Funktionsnamen (increment) ohne die Klammern. Das Einschließen der Klammern (wie increment()) ruft nur die Funktion in diesem bestimmten Moment auf, anstatt es zu verweisen, um in jedem Intervall aufgerufen zu werden. (Siehe the Microsoft page on setInterval für weitere Informationen.)

diesen Code Siehe:

<h2><u>The best game of the century</u></h2> 
 
<p>you have &#163;<span id="money"></span>.</p> 
 

 
<script type="text/javascript"> 
 
    var i = 0; 
 

 
    function increment() { 
 
    i++; 
 
    document.getElementById('money').innerHTML = i; 
 
    } 
 

 
    setInterval(increment, 1000); 
 
</script>

+1

Und warum brauchen Sie nicht die Klammern? –

+0

@BramVanroy Danke, ich habe diesen Teil vergessen. Jetzt enthalten. – freginold

+1

Danke, es half das Problem zu lösen – bilc

3

Änderung setInterval(increment(), 1000); zu setInterval(increment, 1000);

seine nicht funktioniert, weil, wie pro Dokument https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval es eine Funktionsreferenz nimmt ausgeführt werden .. aber die Funktion increment() wie folgt Aufruf wird nur einmal durchführen und die Rückkehr diese Funktion verwendet werden, die für null und nicht beabsichtigt, die Hoffnung wird dies löscht es

var i = 0; 
 

 
function increment(){ 
 
    //console.log(i); 
 
    i++; 
 
    document.getElementById('money').innerHTML = i; 
 
} 
 

 
setInterval(increment, 1000);
<h2><u>The best game of the century</u></h2> 
 
     <p>you have &#163;<span id="money"></span>.</p>

+0

Sie können erklären, warum dies erforderlich ist. –

+0

Danke, es hat geholfen, das Problem zu lösen – bilc

Verwandte Themen