Greuti: rechnen mit - * / funktioniert, nur das + nicht.

Hallo,

Wie ist das möglich? Bei untenstehendem Script funktioniert das Rechnen mit - * / einwandfrei nur das + nicht?! Wenn ich einer Zahl (z.B. 1035), die ich mit "document.movie.number.value" aus einem Eingabefeld auslese , 5 hinzuzählen will (also 1040 erzeugen will) kommt immer als Ergebnis 10355 raus.

var n = document.movie.number.value ;
  var numb = n+5 ;
  var link = 'http://...' + numb + 'V1' ;
  open(link, target="framewindow") ;
  getobject("movienumber").innerHTML = numb ;

  1. Hi,

    Wie ist das möglich? Bei untenstehendem Script funktioniert das Rechnen mit - * / einwandfrei nur das + nicht?!

    doch, auch die String-Konkatenation funktioniert einwandfrei. Und da Du ...

    Wenn ich einer Zahl (z.B. 1035), die ich mit "document.movie.number.value" aus einem Eingabefeld auslese ,

    ... aus einem Eingabefeld *keine* Zahl auslesen *kannst*, sondern immer nur einen String, kann der +-Operator nur als String-Konkatenation erkannt werden. Wandele den String also zunächst in eine Zahl um.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hello,

    Wie ist das möglich? Bei untenstehendem Script funktioniert das Rechnen mit - * / einwandfrei nur das + nicht?! Wenn ich einer Zahl (z.B. 1035), die ich mit "document.movie.number.value" aus einem Eingabefeld auslese , 5 hinzuzählen will (also 1040 erzeugen will) kommt immer als Ergebnis 10355 raus.

    und, fällt dir auf, was da passiert ist? Zeichenkettenverknüpfung.

    Warum ist das passiert? Weil der Wert einer Eigenschaft erstmal als Text gelesen wird. Bei * und / hat sich der Interpreter gedacht "hmh, mit Text wird das nix, versuch ich mal Zahl..."

    Nutze eine Funktion wie parseInt um den Inhalt explizit als Zahl zu bewerten.

    MfG
    Rouven

    --
    -------------------
    He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
    1. Warum ist das passiert? Weil der Wert einer Eigenschaft erstmal als »» Text gelesen wird. Bei * und / hat sich der Interpreter gedacht
      "hmh, »»mit Text wird das nix, versuch ich mal Zahl..."

      Hallo Rouven,

      :-) hab mir noch fast sowas gedacht. Aber weil sogar das Subtrahieren funktionierte war ich echt paff.

      Mit "var n = (parseInt(document.movie.number.value))" funktioniert es nun.

      Vielen Dank für die (eure) schnelle Hilfe!

      MFG
      Greuti

      1. Hallo Greuti.

        Mit "var n = (parseInt(document.movie.number.value))" funktioniert es nun.

        Kürzer:

        var n = document.movie.number.value * 1;

        Einen schönen Montag noch.

        Gruß, Mathias

        --
        ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
        debian/rules
        1. echo $begrüßung;

          Mit "var n = (parseInt(document.movie.number.value))" funktioniert es nun.
          Kürzer:
          var n = document.movie.number.value * 1;

          Die Idee ist gut, das liefert nur nicht das gleiche Ergebnis bei der Eingabe von ungültigen Zahlenwerten. Vorschlag für Testwerte:

          '123'
          '12.3'
          '12,3'
          '123abc'
          'abc'

          echo "$verabschiedung $name";

          1. Hallo dedlfix.

            Mit "var n = (parseInt(document.movie.number.value))" funktioniert es nun.
            Kürzer:
            var n = document.movie.number.value * 1;

            Die Idee ist gut, das liefert nur nicht das gleiche Ergebnis bei der Eingabe von ungültigen Zahlenwerten. Vorschlag für Testwerte:

            '123'

            Wird in den entsprechenden Zahlenwert umgewandelt.

            '12.3'

            Dito.

            '12,3'
            '123abc'
            'abc'

            3×NaN, also auch in Ordnung. Was meinst du also? Hier finde ich das Verhalten von parseInt viel unberechenbarer, da dieses noch so viel wie möglich als Nummer auszuwerten versucht.

            Einen schönen Montag noch.

            Gruß, Mathias

            --
            ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
            debian/rules