2016-10-10 6 views
0

Ich habe eine Variable speed vom Benutzer über die Tastatur gesteuert, und ich möchte den aktuellen Wert die ganze Zeit anzeigen.
Ich habe versucht:aktuellen Wert von var zu HTML anzeigen

var user_speed= 1; //init 

<h3 style="float:left;" id="userspeed"></h3> 

document.getElementById("userspeed").innerHTML = user_speed.toFixed(2); 

aber was ich bekommen ist nur speed = 1 und es nie geändert.

Gibt es eine Möglichkeit, den angezeigten Wert zu ändern, ohne eine Funktion zu erstellen, die jedes Mal ausgelöst wird, wenn der Benutzer die Geschwindigkeit ändert und document.getElementById()... erneut ausführt?

+0

'init-Wert' ??? –

+1

Sie benötigen ** etwas **, das die Variable ausführt und in Ihr 'h3' schreibt, nachdem es geändert wurde, das ist die einzige Möglichkeit. – rorschach

+0

Sie meinen Variablenname 'speed' oder' user_speed'. Überprüfen Sie, dass die Namen unterschiedlich sind –

Antwort

2

Warum setInterval nicht den Wert wie so zu aktualisieren:

var speed = 1; //init 

setInterval(function(){ 
    document.getElementById("userspeed").innerHTML = user_speed.toFixed(2); 
}, 1000); 

Dies ist der Wert alle 1 Sekunde (1000 ms) aktualisiert werden.

+0

Ok, das ist auch eine gute Idee. Angenommen, ich habe 10 Vars und die Intervalle, die Sie geschrieben haben - ist das etwas, das die CPU stören sollte? – arii

+0

Wenn alle Variablen innerhalb desselben Timer-Codeblocks aktualisiert werden, sollte dies kein Problem darstellen. Aber verwenden Sie nicht verschiedene _setInterval_ Aufrufe für jede Variable, da dies dazu führen würde, dass die einzelnen Threads ausgelöst werden. –

0

Sie erhalten nur den Anfangswert, da Sie nur einmal diesen Code aufrufen.

Wie Sie sagten, wenn Sie den Wert ändern möchten, müssen Sie einen Aufruf an diese Funktion erstellen, um den Wert zu erneuern.

0

Ich denke, dass es keinen Weg gibt. Möglicherweise müssen Sie eine Funktion und ein Ereignis verwenden. Denn wie wüssten Sie etwas oder lösen eine Berechnung aus, wenn Sie nicht wissen, an welchem ​​Punkt der Benutzer einige Schlüssel eingegeben hat?

See this question

UPDATE: Wie Sie vielleicht setInterval/SetTimeout sind böse kennen!

Wenn Sie einen Blick auf diese link werfen, werden Sie sehen, dass Sie diese Funktionen aus nicht sehr guten Gründen vermeiden sollten. Simplified:

... Das erste Argument ist eine Zeichenfolge, Sie übergeben es tatsächlich einige JavaScript, die bei Ablauf des Timers in einem globalen Namespace ausgewertet werden. Lies noch einmal die Übel von Evals und komm dann zurück. Das Gute ist, dass Sie keine JavaScript-Codezeile eingeben müssen. ...

+0

Ich dachte, dass das inneHTML irgendwie an die var gebunden ist und es selbst tut – arii

+0

danke für die zusätzliche Information! – arii