Veröffentlicht 21. Mai 200817 j Hallo zusammen, eine Frage zu javascript... Habe noch nie damit etwas gemacht und wollte nun eine Berechnung in einem Formular erstellen... Darum geht es nur, dass die Felder "kosten", "zins" und "zuschlag" in das Ergebnisfeld "ergebnis" errechnet werden sollen. Klappt bei mir aber nicht. Ihr könnt mir sicherlich sagen, was ich ändern muss. Danke im Voraus. <html> <head> <title>Formular</title> </head> <body> <script type="text/javascript"> function berechnen(f) { var kosten = f.kosten.value; var zins = f.zins.value; var zuschlag = f.zuschlag.value; f.ergebnis.value = kosten * zins + zuschlag; } </script> Formular: Einzeilige Eingabenfelder<p> <form> <p><input type=“text“ name=“kosten“>€ Kosten</p> <p><input type=“text“ name=“zins“>Zinsen</p> <p><input type=“text“ name=“zuschlag“>Zuschlag</p> <p><input type="button" name="berechnen" value="Berechnung starten" onClick="berechnen" (this.form)></p> <p><input type=“text“ name=“ergebnis“>Gesamt</p> </form> </body> </html>
21. Mai 200817 j <p><input type="button" [...] [B]onClick="berechnen(this.form)"[/B]></p> Versuch es erstmal so, ob es dann geht.
22. Mai 200817 j <html> <head> <title>Formular</title> <script type="text/javascript"> function berechnen() { var kosten = document.kostenrechnung.kosten.value; var zins = document.kostenrechnung.zins.value; var zuschlag = document.kostenrechnung.zuschlag.value; document.kostenrechnung.ergebnis.value = ""+kosten * zins + zuschlag; } </script> </head> <body> Formular: Einzeilige Eingabenfelder<p> <form name="kostenrechnung"> <p><input type="text" name="kosten">€ Kosten</p> <p><input type="text" name="zins">Zinsen</p> <p><input type="text" name="zuschlag">Zuschlag</p> <p><input type="button" value="Berechnung starten" onClick="javascript:berechnen();"></p> <p><input type="text" name="ergebnis">Gesamt</p> </form> </body> </html> Hab es mal angepasst. Sollte jetzt auch funktionieren Hatte direkt deinen Quellcode übernommen und später beim testen festgestellt das es nicht funktionierte sowie ich es umgeschrieben hatte, bis mir dann auffiel das dein button genauso wie die function "berechnung" hiess. Nachdem ich das gelöscht hatte gunktionierte es einwandfrei. Bin nicht der beste in JavaScript aber ich hoffe eine der Pros könnten sich mal dazu äussern wie das ist wenn ein button und eine function den gleichen Namen haben. Soweit ich weiss sollte das nix machen ausmachen. Gruss L0rdseth
23. Mai 200817 j document.kostenrechnung.ergebnis.value = ""+kosten * zins + zuschlag; Das ist falsch, so hängst du zuerst (kosten*zins) und dann zuschlag an einen Leerstring an. Angenommen, alle drei Werte sind fünf, dann wird folgendes gemacht: ""+"5"*"5"+"5" = ""+25+"5" = "25"+"5" = "255" Um das zu umgehen, müssen Klammern um die Berechnung gesetzt werden. Das reicht allerdings noch nicht. kosten, zins und zuschlag sind Strings, da sie aus Formularfeldern übernommen werden. Die Multiplikation funktioniert, da wird automatisch gecastet, weil es für Strings keine Multiplikation gibt. Der letzte Wert wird allerdings wieder als String angehängt, weil "+" in Javascript der Konkatenations-Operator für Strings ist. Entweder man castet also die Werte gleich bei der Initialisierung als Number() oder dann bei der Berechnung. Bearbeitet 23. Mai 200817 j von Toothrot
23. Mai 200817 j Das ist falsch, so hängst du zuerst (kosten*zins) und dann zuschlag an einen Leerstring an. Angenommen, alle drei Werte sind fünf, dann wird folgendes gemacht: ""+"5"*"5"+"5" = ""+25+"5" = "25"+"5" = "255" Um das zu umgehen, müssen Klammern um die Berechnung gesetzt werden. Das reicht allerdings noch nicht. kosten, zins und zuschlag sind Strings, da sie aus Formularfeldern übernommen werden. Die Multiplikation funktioniert, da wird automatisch gecastet, weil es für Strings keine Multiplikation gibt. Der letzte Wert wird allerdings wieder als String angehängt, weil "+" in Javascript der Konkatenations-Operator für Strings ist. Entweder man castet also die Werte gleich bei der Initialisierung als Number() oder dann bei der Berechnung. Inwiefern caste ich die Werte?
26. Mai 200817 j Ich würde es gleich beim Initialisieren machen. Ungefähr so: var kosten = Number(document.kostenrechnung.kosten.value);
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.