User1989: Warum wird der String nicht in eine Zahl umgewandelt?

Hallo! Ich habe ein Script geschrieben, welches mir die Breite des Bildschirms ausgibt.

css: breite: 200px;

var hoehe = getComputedStyle("rand", null).getPropertyValue("width");
parseFloat(hoehe);
breite +=2;

Wenn ich dann mit dem alert Befehl die Variable Breite anzeige, wird es mir so angezeigt: 200.2!

Mit parseFloat müsste die Variable doch in eine Zahl umgewandelt worden sein.

  1. Hi there,

    css: breite: 200px;

    var hoehe = getComputedStyle("rand", null).getPropertyValue("width");
    parseFloat(hoehe);
    breite +=2;

    Mit parseFloat müsste die Variable doch in eine Zahl umgewandelt worden sein.

    Was Du mit der Variablen "hoehe" machst, ist der Variablen "breite" ziemlich egal...

    1. Hi there,

      css: breite: 200px;

      var hoehe = getComputedStyle("rand", null).getPropertyValue("width");
      parseFloat(hoehe);
      breite +=2;

      Mit parseFloat müsste die Variable doch in eine Zahl umgewandelt worden sein.

      Was Du mit der Variablen "hoehe" machst, ist der Variablen "breite" ziemlich egal...

      Habe mich da nur vertippt:)

      1. Hi there,

        Habe mich da nur vertippt:)

        naja, vielleicht hast Du Dich ja woanders auch vertippt? Am einfachsten jedenfalls ist es, eine Variable, von der Du annimmst, sie enthalte eine Zahl, mit eins zu multiplpizieren; danach kannst Du sicher arithmetische Operationen damit durchführen. Und, wie Molily schon geschrieben hat, Gleitkommazahlen haben am Bildschirm nichts verloren, also parseInt und nicht parseFloat...

    2. Hi,

      parseFloat(hoehe);
      Was Du mit der Variablen "hoehe" machst, ist der Variablen "breite" ziemlich egal...

      er macht nichts mit der Variablen "hoehe". Genauso gut hätte er in den Code die folgende Zeile schreiben können:

      42;

      Das kostet noch etwas weniger an Rechenzeit und hat den selben Effekt: gar keinen.

      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
      1. @@Cheatah:

        nuqneH

        42;

        Das kostet noch etwas weniger an Rechenzeit

        Bedenke die Rechenzeit, die das vorher schon gekostet hat!

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. [latex]Mae  govannen![/latex]

          42;

          Das kostet noch etwas weniger an Rechenzeit

          Bedenke die Rechenzeit, die das vorher schon gekostet hat!

          Ach, was sind schon 7½ Millionen Jahre unter Freunden...

          Stur lächeln und winken, Männer!
          Kai

          --
          Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
          in Richtung "Mess up the Web".(suit)
          SelfHTML-Forum-Stylesheet
      2. Hallo,

        parseFloat(hoehe);
        Was Du mit der Variablen "hoehe" machst, ist der Variablen "breite" ziemlich egal...
        er macht nichts mit der Variablen "hoehe".

        doch, er liest ihren Wert - um ihn umzuwandeln und das Ergebnis dann wegzuwerfen.

        Genauso gut hätte er in den Code die folgende Zeile schreiben können:
        42;

        ;-)

        Ciao,
         Martin

        --
        Die letzten Worte des Neandertalers:
        Möchte doch zu gern wissen, was in der Höhle ist ...
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hallo,

    var hoehe = getComputedStyle("rand", null).getPropertyValue("width");

    getComputedStyle erwartet ein Elementobjekt als ersten Parameter, keinen String. Und wieso nennst du die Variable Höhe, wenn du die Breite ausliest? ;)

    Vermutung: In manchen Browsern gibt getComputedStyle Kommazahlen für Pixelwerte zurück.

    parseFloat(hoehe);
    breite +=2;

    Wenn ich dann mit dem alert Befehl die Variable Breite anzeige, wird es mir so angezeigt: 200.2!

    Wenn deine Vermutung stimmt, dass der Wert vom Typ String ist, dann muss er vorher "200." gewesen sein – sehr unwahrscheinlich. Wäre er "200", käme stattdessen "2002" heraus, wenn du "2" anhängst.

    Mit parseFloat müsste die Variable doch in eine Zahl umgewandelt worden sein.

    Es ist wahrscheinlich eine Zahl – nur offenbar keine ganze Zahl. Wenn du eine ganze Zahl brauchst, verwende http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int@title=parseInt.

    Mathias

  3. Hi,

    und noch zusätzlich zum bisher gesagten:

    var hoehe = getComputedStyle("rand", null).getPropertyValue("width");
    parseFloat(hoehe);

    hoehe hat hiernach immer noch den selben Typ wie vorher.
    parseFloat ändert nicht den Variableninhalt, sondern gibt einen Wert zurück.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?