Euroumrechner mit Javascript??

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kann ich in JS eine Parameter Übergabe machen? Ich habe eine Funktion geschrieben und möchte diese 7 mal verwenden.
    Bisher habe ich den einzelnen Variablen durch den Pfade einen Wert gegeben. Also wenn ich das nach dem alten Schema mache, müsste ich die Funktion 7 mal schreiben, immer mit andern Variablen und das ist ja nicht elegant.
  • Natürlich kann man in JS Parameter übergeben.

    Quellcode

    1. function foobar(foo,bar) {
    2. alert(foo); //Zeige den 1. Parameter als Meldung an
    3. bar = bar / 2; //Halbiere den 2. Parameter
    4. }

    Quellcode

    1. <input type="button" value="Klick mich" onclick="foobar('Hello World',6)" />
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Also meine Tabelle sieht so aus.

    [Blockierte Grafik: http://img31.imageshack.us/img31/4516/unbenanntuz.png][Blockierte Grafik: http://img31.imageshack.us/img31/unbenanntuz.png/1/w587.png]

    Und das Problem ist, ich muss immer erst den MwSt-Satz ändern damit es was berechnet. Sonst steht da immer: NaN. Das liegt doch an dem onchange oder? Was wäre eine gute Alternative wenn ich will das die Werte schon ohne Änderung gelten sollen.
  • Du könntest auf jedes der Eingabefelder (Menge, Produkt, MwSt) ein onchange-Event definieren, welches immer die selbe Funktion aufruft, die jetzt schon beim MwSt aufgerufen wird.
    Andererseits könntest du mit onload bereits gemachte Eingaben (z. Bsp. aus einer Datenbank) direkt am Anfang schon rechnen lassen.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Bitte poste mal den Quellcode. Ich werde irgendwie immer noch nicht schlauer aus deiner Frage :). Also du hast die Tabelle und machst eine Eingabe. Du gibst bei Anzahl 1 ein. Dann gibt er schon ein Ergebnis aus. Wenn du dann das Produkt oder die MwSt. veränderst, dann ändert er auch das Ergebnis.
    Oder willst du bei den leere Feldern als Ergebnis 0 stehen haben?
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Du musst EP() respektive EPn(), wobei n = 1 bis 6, als erste Funktion aufrufen, da die andere Funktionen auf das Einzelpreisfeld zugreifen. Im ersten Durchlauf ist dort aber noch kein Wert, deswegen kommt am Ende NaN heraus.
    Beispiel:

    Quellcode

    1. <select name="menge1" size="1" onchange="EP(), MW(), BT(), Last()">
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Du musst die Eingabefelder auf Inhalt prüfen und dann entweder den eingegebenen Wert in die Berechnung mit einfließen lassen, oder du weißt der entsprechenden Variable 0 zu.
    So funktioniert es z. Bsp.:

    Quellcode

    1. function Last()
    2. {
    3. var wert1 = (this.document.Produktbestellung.betrag1.value != "") ? this.document.Produktbestellung.betrag1.value : 0.0;
    4. var wert2 = (this.document.Produktbestellung.betrag2.value != "") ? this.document.Produktbestellung.betrag2.value : 0.0;
    5. var wert3 = (this.document.Produktbestellung.betrag3.value != "") ? this.document.Produktbestellung.betrag3.value : 0.0;
    6. var wert4 = (this.document.Produktbestellung.betrag4.value != "") ? this.document.Produktbestellung.betrag4.value : 0.0;
    7. var wert5 = (this.document.Produktbestellung.betrag5.value != "") ? this.document.Produktbestellung.betrag5.value : 0.0;
    8. var wert6 = (this.document.Produktbestellung.betrag6.value != "") ? this.document.Produktbestellung.betrag6.value : 0.0;
    9. var Ergebnis = 0;
    10. Ergebnis = (wert1+wert2+wert3+wert4+wert5+wert6);
    11. parseFloat(document.Produktbestellung.betrag7.value = Ergebnis);
    12. }
    Alles anzeigen

    Bei diesem Code wurden Conditional Expressions genutzt, sie sind im Endeffekt fast äquivalent zu if.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Sry, mein Fehler. Hab vergessen die Strings in Floats umzuwandeln.
    Hiermit funktioniert wieder alles:

    Quellcode

    1. function Last()
    2. {
    3. var wert1 = (this.document.Produktbestellung.betrag1.value != "") ? parseFloat(this.document.Produktbestellung.betrag1.value) : 0.0;
    4. var wert2 = (this.document.Produktbestellung.betrag2.value != "") ? parseFloat(this.document.Produktbestellung.betrag2.value) : 0.0;
    5. var wert3 = (this.document.Produktbestellung.betrag3.value != "") ? parseFloat(this.document.Produktbestellung.betrag3.value) : 0.0;
    6. var wert4 = (this.document.Produktbestellung.betrag4.value != "") ? parseFloat(this.document.Produktbestellung.betrag4.value) : 0.0;
    7. var wert5 = (this.document.Produktbestellung.betrag5.value != "") ? parseFloat(this.document.Produktbestellung.betrag5.value) : 0.0;
    8. var wert6 = (this.document.Produktbestellung.betrag6.value != "") ? parseFloat(this.document.Produktbestellung.betrag6.value) : 0.0;
    9. var Ergebnis = 0;
    10. Ergebnis = (wert1+wert2+wert3+wert4+wert5+wert6);
    11. parseFloat(document.Produktbestellung.betrag7.value = Ergebnis);
    12. }
    Alles anzeigen
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Kannst du mir sagen wieso diese Abfrage nicht klappt?

    <form name="Produktbestellung">
    <td>
    <input name="menge1" type="text" size="3" maxlength="30" onchange="return chkMenge(), EP(), MW(), BT(), Last()">
    </td>
    </form >

    --------------------------------JS-----------------------------------------------

    function chkMenge ()
    {
    if (document.Produktbestellung.menge1.value == "")
    {
    alert("Bitte geben Sie die Menge ein!");
    document.Produktbestellung.menge1.focus();
    return false;
    }

    var chkZ = 1;

    for (i = 0; i < document.Produktbestellung.menge1.value.length; ++i)

    if (document.Produktbestellung.menge1.value.charAt(i) < "0" ||
    document.Produktbestellung.menge1.value.charAt(i) > "9")

    chkZ = -1;
    if (chkZ == -1)
    {
    alert("Menge ist keine Zahl!");
    document.Produktbestellung.menge1.focus();
    return false;
    }
    }