Javascript: Funktion nur ausführen wenn bedingung stimmt?
ich habe dieses JS :
function Rechner(){
var x=document.getElementById("laenge").value;
var y=document.getElementById("breite").value;
document.getElementById("flaeche").value = xy;
}
jedes input hat das Attribut :
oninput="Rechner(this.value)"
Doch er soll die flaeche im Input nur ausgeben wenn wirklich laenge und breite ausgefüllt sind. derzeit zeigt er erst noch 0 an wenn nur 1 stimmt.
wie geht das ? kann man da irgendwie noch sagen "if isset laenge & breite" ?
4 Antworten
function Rechner(){
var x = parseInt(document.getElementById("laenge").value);
var y = parseInt(document.getElementById("breite").value);
if(isNaN(x) || isNaN(y)) return;
document.getElementById("flaeche").value = x*y;
}
Alternativ auch mit parseFloat anstelle von parseInt.
Okay, hier eine etwas optimiertere Version: https://jsfiddle.net/isendrak/541zdkex/
function Rechner(){
var x=document.getElementById("laenge").value;
var y=document.getElementById("breite").value;
if(isNaN(x)&&isNaN(y)){
document.getElementById("flaeche").value = xy;
}
else{
alert('Erst denken, dann drücken!');
}
}
Stimmt, kann leider nicht mehr die Antwort bearbeiten :(
Man muss nur ein ! vor die isNaN packen
Das Multiplikationszeichen fehlt ebenso. Ich vermute, du hast die Zeile vom FS nur abkopiert. MonkeyKing hat ebenso schon darauf hingewiesen.
Ja Code hab ich vom Fragesteller übernommen, in der Hoffnung er wäre ok.
Erstmal
document.getElementById("flaeche").value = xy;
musst du
document.getElementById("flaeche").value = x*y;
schreiben.
Ansonsten machst du einfach
if (x && y) {
document.getElementById("flaeche").value = x*y;
}
if x != null && y!= null
berechne
else
schreibe warntext oder so
Ich würde das Ausgabefeld leeren, sonst bleibt da das Ergebnis der letzten Berechnung drin stehen, auch wenn man einen ungültigen Zahlenausdruck einsetzt (wie 10.000.000,00 - beachte, dass parseFloat/parseInt die US-amerikanische Zahlendarstellung verwendet)