Frage von SteveausBerlin, 36

Javascript Fehler in der Funktion?

Ich habe eine Funktion geschrieben, bei der ein Nutzer zwei Zahlen eingeben soll. Die zweite Zahl soll größer als die erste sein. Sobald der Nutzer auf den Button klickt, werden alle Zwischenzahlen ausgegeben.

Das Programm funktioniert wenn beide Zahlen ein- oder zweistellig sind, ist eine Zahl einstellig und die zweite zweistellig, funktioniert es nicht. Wo liegt der Fehler?

<input id="anfang" placeholder="erste Zahl"/><br />
<input id="ende" placeholder="zweite Zahl"/><br />
<button id="click">klick</button>
<div id="test"></div>
<script>
var anfang = document.getElementById("anfang");
var ende = document.getElementById("ende");
var button = document.getElementById("click");
var test = document.getElementById("test");

function klick(){
var eins = anfang.value;
var zwei = ende.value;
var arr = [];
for(var i = eins; i < zwei; i++){
    arr.push(i);
    test.innerHTML = arr;
}

}
button.onclick = klick;
</script> 
Antwort
von Dory1, 30

Versuchs mal so:

function klick() {
var eins = anfang.value;
var zwei = ende.value;
var arr = [];
for (var i = eins; i < zwei; i++) {
arr.push(i);
}
test.innerHTML = arr.join(", ");
}

Demo: http://codepen.io/anon/pen/mVqvbX?editors=101

Kommentar von Dory1 ,

Maximilianus7 hat im übrigen völlig Recht. Du musst die Werte noch jeweils in Ganzzahlen umwandeln:

function klick() {
var eins = parseInt(anfang.value);
var zwei = parseInt(ende.value);
var arr = [];
for (var i = eins; i < zwei; i++) {
arr.push(i);
}
test.innerHTML = arr.join(", ");
}
Antwort
von maximilianus7, 27

die variablen eins und zwei enthalten strings und in der for schleife werden sie zunächst auch als solche verglichen. das i++ wandelt zwar i in einen integer, das mag aber zu spät sein:

i < zwei für i="2" und zwei="12" ist dann false (wg. "2" > "1").

du solltest vorher mit parseInt wandeln.

Keine passende Antwort gefunden?

Fragen Sie die Community