Euroumrechner mit Javascript??

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

  • Quellcode

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

    Das Problem bei deinem Code ist, dass du wieder einen String hast. Und diesen kannst du nicht logisch vergleichen mit einer Zahl. Du musst den String in eine Zahl umwandeln.
    Dann würde ich zumindet bei for noch { und } machen, bei if wäre es der besseren Lesbarkeit halber auch wünschenswert.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Also muss ich wieder parseFloat verwenden oder?


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

    var chkZ = 1.0;

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

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

    chkZ = -1.0;
    if (chkZ == -1.0)
    {
    alert("Menge ist keine Zahl!");
    parseFloat(document.Produktbestellung.menge1.focus());
    return false;
    }
    }
  • Ich glaube, du verfolgst eine falsche Logik in deine Überprüfung. Zuerst einmal: Du versuchst immer noch Strings zu vergleichen. Alles was in JS in " und " steht, ist ein String, egal ob "123" oder "hallo". Daraus ergibt sich das problem, dass du strings nicht auf größer oder kleiner verlgleichen kannst. Wandelst du sie wiederrum in eine Zahl um, dann gibt es einen Fehler bei der Umwandlung, wenn es ein Buchstabe ist.
    Ich würde dir empfehlen, den String Stelle für Stelle mit switch() zu überprüfen. Du prüfst dann, ob es eine Zahl zwischen 0 und 9 ist (10 einzelne case anweisungen). Falls nicht, dann springt er in den default zweig und hier kannst du ihn dann anweisen, abzubrechen und eine alert meldung auszugeben.
    Das Programmieren überlasse ich jetzt aber mal dir :-).
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Ist das so richtig?

    function NurZahl()
    {

    switch (NurZahl) {

    case "1": document.Produktbestellung.menge1.value;
    break;

    case "2": document.Produktbestellung.menge1.value;
    break;

    case "3": document.Produktbestellung.menge1.value;
    break;

    case "4": document.Produktbestellung.menge1.value;
    break;

    case "5": document.Produktbestellung.menge1.value;
    break;

    case "6": document.Produktbestellung.menge1.value
    break;

    case "7": document.Produktbestellung.menge1.value
    break;

    case "8": document.Produktbestellung.menge1.value
    break;

    case "9": document.Produktbestellung.menge1.value
    break;

    case "0": document.Produktbestellung.menge1.value
    break;

    default: alert("Menge ist keine Zahl!");
    document.Produktbestellung.menge1.focus();

    break; }

    }


    Das dumme ist nur es erkennt die Zahlen nicht als richtig. Und das focus() funktioniert nicht.
  • Bzw: Könnte ich nicht einfach die JS Funktion IsNaN benutzen?



    <form name="Produktbestellung" action="http://de.selfhtml.org/cgi-bin/comments.pl">
    <table border="1" cellpadding="2" cellspacing="2">

    <td>
    <input name="menge1" type="text" size="3" maxlength="30" onchange="NurZahl(this.Produktbestellung.menge1.value), EP(), MW(), BT(), Last()">
    </td>

    </table>
    </form>

    .................Java...........

    function NurZahl(parseInt(Wert))
    {
    if(isNaN(parseInt(Wert)) == true)
    {
    alert(parseInt(Wert) + " ist keine Zahl!");
    element.focus();
    return false;
    }
    }

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ITzEmir ()

  • Quellcode

    1. <input name="menge1" type="text" size="3" maxlength="30" onchange="NurZahl(this.Produktbestellung.menge1.value), EP(), MW(), BT(), Last()">

    Wenn du bei onchange this abgibst, dann befindest du dich im DOM-Baum, direkt beim input element. Deswegen kannst du auf den Inhalt mit this.value zugreifen.

    Quellcode

    1. function NurZahl(parseInt(Wert))

    Eine explizite Umwandlung hat nichts in den Parametern zu suchen. Umwandlungen und anderen Operationen werden erst später vorgenommen,

    Quellcode

    1. if(isNaN(parseInt(Wert)) == true)

    Was du ja hier auch noch einmal getan hast.

    Quellcode

    1. alert(parseInt(Wert) + " ist keine Zahl!");

    Hier würde in der Meldung immer "NaN ist keine Zahl!" stehen. Wieso willst du den String in eine Zahl umwandeln, wenn du doch schon weißt, dass es keine Zahl ist?

    Quellcode

    1. element.focus();

    vorher kommt element? du hast es weder irgendwo definiert, noch ist es eine von JS selbst definierte Variable.

    Hier mal dein Code ein bisschen korrigiert und lauffähig:

    Quellcode

    1. <script type="text/javascript">
    2. function NurZahl(Wert,Element)
    3. {
    4. if(isNaN(parseInt(Wert)) == true)
    5. {
    6. alert(Wert + " ist keine Zahl!");
    7. element.focus();
    8. return false;
    9. }
    10. }
    11. </script>
    12. <form name="Produktbestellung" action="http://de.selfhtml.org/cgi-bin/comments.pl">
    13. <table border="1" cellpadding="2" cellspacing="2">
    14. <td>
    15. <input name="menge1" type="text" size="3" maxlength="30" onchange="NurZahl(this.value,this)">
    16. </td>
    17. </table>
    18. </form>
    Alles anzeigen


    Versuche ihn zu verstehen, und wenn du nicht, dann frag einfach. Ich habe so das Gefühl, dass sich manchen Fehler andauernd bei dir wiederholen. Programmieren lernen besteht immer zu einem Großteil aus Programmcode lesen, evtl. debuggen (firebug) und verstehen.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Das erste this.value ist ein DOM-Verweis auf den Inhalt des Textfeldes, this(Textfeld).value(Inhalt). Mit this wird nämlich schon das Objekt bezeichnet, mit dem du aktuell am arbeiten bist, in diesem fall das textfeld. DAs zweite this war dazu gedacht, dein focus() zum laufen zu bekommen, kannst du also jetzt einfach löschen.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Alles klar das habe ich jetzt auch verstanden.

    Hab auch schon ein paar andere Sachen mit JS gemacht...

    Jetzt habe ich ein Problem damit neue Elemente in die Auswahlliste einfügen bzw. zu löschen. Ich weiß nicht ob ich ein Array brauche oder ob es auch anders geht.



    Quellcode

    1. <form name="Bestellung" action="http://de.selfhtml.org/cgi-bin/comments.pl">
    2. <table border="1">
    3. <thead>
    4. <tr>
    5. <th>Pos.</th> <th>Menge</th>
    6. <th>Produkt</th>
    7. <th>MwSt-Satz</th>
    8. <th>Einzelpreis [€]</th>
    9. <th>MwSt [€]</th>
    10. <th>Betrag [€]</th>
    11. </tr>
    12. <tr>
    13. <td>1</td>
    14. <td>
    15. <select name="menge1" size="1" onchange="EP(), MW(), BT(), Last()">
    16. <option value="0">0</option>
    17. <option value="1">1</option>
    18. <option value="2">2</option>
    19. <option value="3">3</option>
    20. <option value="4">4</option>
    21. <option value="5">5</option>
    22. <option value="6">6</option>
    23. <option value="7">7</option>
    24. <option value="8">8</option>
    25. <option value="9">9</option>
    26. <option value="10">10</option>
    27. <option value="11">11</option>
    28. </select>
    29. </td>
    30. <td>
    31. <select name="Pro1" size="1" onchange="EP(), MW(), BT(), Last()">
    32. <option value="3">Heft</option>
    33. <option value="1.5">Stift</option>
    34. <option value="15">Tisch</option>
    35. <option value="30">10 kg Hummer</option>
    36. <option value="9">DVD</option>
    37. </select>
    38. </td>
    39. <td>
    40. <select name="satz1" size="1" onchange="EP(), MW(), BT(), Last()">
    41. <option value="19">19%</option>
    42. <option value="7">7%</option>
    43. <option value="16">16% (alt)</option>
    44. </select>
    45. </td>
    46. <td>
    47. <input name="name1" type="text" size="14" maxlength="30" readonly>
    48. </td>
    49. <td>
    50. <input name="mwst1" type="text" size="10" maxlength="30" readonly>
    51. </td>
    52. <td>
    53. <input name="betrag1" type="text" size="10" maxlength="30" readonly>
    54. </td>
    55. </tr>
    56. </thead>
    57. <tbody id="BestellBody">
    58. <script type="text/javascript">
    59. createNewBestellPos();
    60. createNewBestellPos();
    61. createNewBestellPos();
    62. </script>
    63. </tbody>
    64. <tfoot> <td colspan=8 align="right"> <input type="text" name="Gesamtbetrag" readonly="readonly" size="10" /></td></tfoot>
    65. </table>
    66. <input type="button" value="Hinzufügen" name="hinzufuegenBtn" onClick="createNewBestellPos();"/>
    67. <input type="button" value="Löschen" name="loeschenBtn" onClick="removeLastBestellPos();"/>
    68. <input type="submit" value="Bestellen" name="bestellBtn" />
    69. <input type="reset" value="Reset" name="resetBtn" />
    70. </form>
    Alles anzeigen


    JS

    Quellcode

    1. function Hinzufuegen () {
    2. NeuerEintrag = new Option(document.menge1.neu.value, document.menge1.neu.value, false, true);
    3. document.Bestellung.menge1.options[document.Bestellung.menge1.length] = NeuerEintrag;
    4. document.Bestellung.neu.value= "";}
    5. function Loeschen() {
    6. document.Bestellung.menge1.options[document.Bestellung.menge1.length-1] = null;}
    7. function EP()
    8. {
    9. var wert1 = this.document.Produktbestellung.Pro1.value;
    10. document.Produktbestellung.name1.value = wert1;
    11. }
    12. function MW()
    13. {
    14. var Ergebnis = 0;
    15. var wert11 = parseFloat(this.document.Produktbestellung.name1.value);
    16. var wert22 = parseFloat(this.document.Produktbestellung.satz1.value);
    17. Ergebnis = ((wert11*wert22)/100);
    18. document.Produktbestellung.mwst1.value = Ergebnis;
    19. }
    20. function BT()
    21. {
    22. var wert111 = parseFloat(this.document.Produktbestellung.name1.value);
    23. var wert222 = parseFloat(this.document.Produktbestellung.mwst1.value);
    24. var wert333 = parseFloat(this.document.Produktbestellung.menge1.value);
    25. var Ergebnis1 = 0;
    26. var Ergebnis2 = 0;
    27. var Ergebnis3 = 0;
    28. Ergebnis1 = (wert111+wert222);
    29. Ergebnis2 = (wert333*Ergebnis1);
    30. Ergebnis3 = Math.round(Ergebnis2 * 100) / 100;
    31. parseFloat(document.Produktbestellung.betrag1.value = Ergebnis3);
    32. }
    Alles anzeigen
  • Wenn ich das richig sehe, dann kam das hier dazu:

    Quellcode

    1. unction Hinzufuegen () {
    2. NeuerEintrag = new Option(document.menge1.neu.value, document.menge1.neu.value, false, true);
    3. document.Bestellung.menge1.options[document.Bestellung.menge1.length] = NeuerEintrag;
    4. document.Bestellung.neu.value= "";}
    5. function Loeschen() {
    6. document.Bestellung.menge1.options[document.Bestellung.menge1.length-1] = null;}

    Aber was willst du mit

    Quellcode

    1. unction Hinzufuegen () {
    2. NeuerEintrag = new Option(document.menge1.neu.value, document.menge1.neu.value, false, true);

    bezwecken? Wenns ein Array sein sollte, dann bitte de.selfhtml.org/javascript/objekte/array.htm durchlesen.
    Der Rest muss dann auch noch einmal überarbeitet werden.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.