Frage

Ich versuche einen Wert zu haben (key) diese Aktualisierungen, die einer Nummer in einem Textfeld entsprechen ((angle) geteilt durch einen Wert (25). Aus irgendeinem Grund die jedoch die changeMe Die Funktion scheint nicht auszuführen. Verwende ich Onchange falsch?

<script type="text/javascript">

function changeMe(x)
{
var y=document.getElementById(x).value;
y = (y/25);
y = (Math.round(y));
document.getElementById(key).value=y;
}
</script>

<form method="POST" action="">
Your Angle: <input type="text" name="angle" id="angle" 
    onchange="changeMe(this.id)" value="0"/>
Key: <span id="key">0</span><br />
</form>
War es hilfreich?

Lösung

Ändern Sie die Linie

document.getElementById(key).value=y;

zu

document.getElementById('key').innerHTML=y;

Andere Tipps

Um zu sehen, ob es aufgerufen wird, fügen Sie dies einfach als erste Zeile hinzu:

alert("Hey, I'm being called!");

Jetzt sehe ich hier schon ein Problem: In der letzten Zeile Ihrer Funktion tun Sie es getElementById(key), aber du solltest einschließen key mit doppelten Zitaten. Wenn nicht, wird es als Variable anstelle einer Zeichenfolge angesehen.

Das changeMe(this.id) stört mich, ich benutze es, nur zu sehen (this), Aber der beste Weg, um zu wissen, was los ist Der Beginn der Changeme -Funktion und sehen, was übergeben wird, da es einen Fehler geben kann.

Und die anderen beiden erwähnten bereits das Problem mit Ihrem GetelementById.

Die letzte Zeile document.getElementById(key) sollte sein document.getElementById("key").

Übrigens können Sie dies ein gutes Stück vereinfachen, indem Sie das übergeben <input> Element direkt anstelle seiner ID:

<script type="text/javascript">
function changeMe(angle)
{
    var key = document.getElementById("key");
    key.innerHTML = Math.round(angle.value / 25);
}
</script>

<form method="POST" action="">
Your Angle: <input type="text" name="angle" id="angle" 
    onchange="changeMe(this)" value="0"/>
Key: <span id="key">0</span><br />
</form>

Versuchen Sie, den Vorschlag von James Black zu verwenden, um sie zu verwenden onchange="changeMe(this)", Ihre Funktion wird vereinfacht

function changeMe(x) {
    y = Math.round(x.value/25);
    document.getElementById('key').innerHTML = y;
}

Beachten Sie die document.getElementById('key').innerHTML = y, Dies ersetzt das innere HTML (wie der Name beschreibt), ich denke, das ist es, was Sie verwenden wollten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top