Plus rechnen geht nicht

  • Guten Tag

    Kann mir einer sagen, wieso die Zahlen nicht addiert werden?

    Die werden einfach in einer Reihe angezeigt.

    Das Pluszeichen ist doch dafür da, oder nicht?

    Brauche ich da jetzt irgendein Math() Befehl ?

  • Nein, Du brauchst Math nicht. Das ist etwas verwirrend in Javascript: Das Pluszeichen dient sowohl zum Addieren von Zahlen als auch zum Zusammenfügen von Strings. Und weil der Inhalte eines Eingabefeldes ein String ist, werden die Zahlen zusammen gefügt statt addiert. Wandle die Strings aus den Eingabefeldern mit parseInt in eine Zahl um, dann funktioniert es, wie Du möchtest.

  • Mist.

    Jetzt muss ich meinen Text änden weil ich zulangsam war.

    parseInt wollte ich auch sagen und es gibt noch 2 möglichkeiten.




    Number();

    JavaScript
    1. var end_ergebniss=Number(gesamt.innerHTML)+Number(addieren);

    oder Pluszeichen anders setzen

    Warum das Pluszeichen in der 2 Variante daraus eine Zahl macht , habe ich auch noch nicht verstanden.

  • Noch was.

    Du hast eine 1 als Id benutzt.

    Mittlerweile ist das erlaubt.

    Früher war es verboten eine Variable, Funktion oder ID eine Zahl zu geben, die Browser hatten damit Probleme.

    Ich würde da aber heute auch noch drauf verzichten , weil das Debugging bei großem Code dann schwer werden kann.


    Ich glaube das die Zahlen als Id immer noch nicht richtig laufen

    weil das geht

    HTML
    1. <input type="text" id="a1">
    2. <input type="button" onclick="Rechnen()" value="Dazu Zählen">
    3. <script>
    4. function Rechnen(){
    5.      alert(a1.value)
    6. }
    7. </script>


    Das nicht

    HTML
    1. <input type="text" id="1">
    2. <input type="button" onclick="Rechnen()" value="Dazu Zählen">
    3. <script>
    4. function Rechnen(){
    5.      alert(1.value)
    6. }
    7. </script>

    Könnte jetzt aber auch Zufall sein das es bei mir nicht geht.

  • Zitat

    Früher war es verboten eine Variable, Funktion oder ID eine Zahl zu geben, die Browser hatten damit Probleme.

    AFAIK trifft das auf Variablen und Funktionen immer noch zu, nur für IDs ist es in HTML5 zulässig.

    Es gibt noch einen anderen Gesichtspunkt bei der Sache: In CSS ist eine numerische ID wiederum nicht zulässig. getElementById funktioniert damit aber nicht querySelector und auch nicht querySelectorAll weil für den Selektor, der als Parameter übergeben wird, die Regeln von CSS gelten und damit eine Zahl nicht zulässig ist.

    Deshalb ist es nicht empfehlenswert eine reinen Zahlenwert als ID zu nehmen.

    Der Zugriff, den Du bei deinem Alert verwendest, funktioniert übrigens, wenn man ihn so umändert:

    console.log(window['1'].value);

    Aber ebenfalls nicht empfehlenswert.

  • parseInt kenne ich eigentlich doch, ich hatte es nicht mehr auf dem Schirm.

    Danke Sempervivum für den Denkanstoß.

    Die beiden Beispiele von basti1012 kenne ich noch nicht.

    Gibt es irgendwelche Vorteile bei einem von den 3 Beispielen?

    Deshalb ist es nicht empfehlenswert eine reinen Zahlenwert als ID zu nehmen.

    Ich werde es auch in Zukunft anders machen, habe in anderen Skripten gesehen das da oft eine ID steht ,die irgendwas mit dem Feld, Button oder sonst was am Hut hat.

    Ist bestimmt auch einfacher zu debuggen, wie Basti1210 auch schon anmerkte.

  • Zitat

    habe in anderen Skripten gesehen das da oft eine ID steht ,die irgendwas mit dem Feld, Button oder sonst was am Hut hat.

    Genau, anders gesagt, IDs, Variablennamen etc. sollten sprechend bzw. aussagefähig sein. Das erleichtert das Verständnis für Außenstehende, wenn Du z. B. im Forum um Rat fragst und auch dir selbst, wenn Du dir das in einem halben Jahr wieder ansiehst.

  • ichkannnix schrieb:

    Gibt es irgendwelche Vorteile bei einem von den 3 Beispielen?

    Das dritte mit dem +=+ ist auf keinen Fall zu empfehlen, da Trickprogrammierung und schwer verständlich.

    Den Unterschied bei den anderen beiden kannst Du selber austesten durch diesen Code:

    Code
    1. const str = " 1248 xyz";
    2. console.log(parseInt(str));
    3. console.log(Number(str));