Martin: Länge von einer Nichttext-Variable ermitteln

hallo,
wenn ich die länge von einer variable ermitteln will die nur text enthält geht das ja ganz einfach:
variable="asdfasfd";
alert(variable.length);

aber wie mache ich es wenn meine variable keinen text enthält sondern ziffern mit denen gerechnet werden muss?
variable=123;

Martin

  1. Hi,

    wenn ich die länge von einer variable ermitteln will die nur text enthält geht das ja ganz einfach:
    variable="asdfasfd";
    alert(variable.length);

    aber wie mache ich es wenn meine variable keinen text enthält sondern ziffern mit denen gerechnet werden muss?
    variable=123;

    Der mathematische Ansatz:
    Wenn es sich um positive Integers handelt:

    zahl = 123;
    alert( Math.ceil(Math.log(zahl)/Math.log(10)) );

    log(zahl)/log(10) ist der Zehnerlogarithmus (javascript kennt nur den natürlichen Logarithmus, aber log(x)/log(base) ergibt immer den logarithmus der Zahl zur Basis base).
    Mit ceil erreichst Du, daß bei vorhandenen Nachkommastellen (außer nullen) die nächsthöhere Zahl genommen wird.

    Wenn auch negative Zahlen dabei sind und es um die Ziffernzahl geht:
    alert( Math.ceil(Math.log(Math.abs(zahl))/Math.log(10)) );

    Der textuelle Ansatz:
    zahl = 123;
    alert(zahl.length);
    Javascript kennt keine Datentypen, wandelt also bei Bedarf selbst um.

    Andreas

    1. hallo andreas,
      danke für deine hilfe.

      aber bei mir wird bei deinem beispiel nur "undefined" ausgegeben.

      Der textuelle Ansatz:
      zahl = 123;
      alert(zahl.length);
      Javascript kennt keine Datentypen, wandelt also bei Bedarf selbst um.

      1. Hallo,

        danke für deine hilfe.

        aber bei mir wird bei deinem beispiel nur "undefined" ausgegeben.

        Der textuelle Ansatz:
        zahl = 123;
        alert(zahl.length);
        Javascript kennt keine Datentypen, wandelt also bei Bedarf selbst um.

        so ganz automatisch klappt es nicht, bei JavaScript erfolgt die Umwandlung
        nach entpr. Operation, die Frage nach length reicht hier nicht.
        alert((variable+"").length); wandelt die Zahl in eine Zeichenfolge um durch
        das Hinzufügen einer leeren Zeichenfolge. Umgekehrt variable*1.

        Grüsse

        Cyx23

  2. Hallo Martin,

    wenn ich die länge von einer variable ermitteln will die nur text enthält geht das ja ganz einfach:
    variable="asdfasfd";
    alert(variable.length);

    aber wie mache ich es wenn meine variable keinen text enthält sondern ziffern mit denen gerechnet werden muss?
    variable=123;

    du hättest vmtl. eine Länge von 1 bei variable als array (wenn es eins wäre),
    und 123 als Grösse (Wert?), und 3 als zeichenlänge :  alert((variable+"").length);
    Sonst könntest du noch schauen ob es Methoden Math... gibt welche dei Stellen
    von Zahlen ausgeben.

    Grüsse

    Cyx23

    1. Hallo Martin,

      Hallo Cyx23,
      danke für deinen tipp

      »»alert((variable+"").length);
      das genügt mir vollkommen

      martin

  3. Hallo,

    aber wie mache ich es wenn meine variable keinen text enthält sondern ziffern mit denen gerechnet werden muss?
    variable=123;

    var variable=123;
    alert(variable.toString().length);

    MfG, Thomas

    1. Hallo Thomas,

      welche methode ist den sicherer?
      kommen die browser mit beiden lösungen aus oder ist eine nicht ganz konform?
      alert((variable+"").length);
      oder
      alert(variable.toString().length);

      Martin

      1. Hallo,

        welche methode ist den sicherer?
        kommen die browser mit beiden lösungen aus oder ist eine nicht ganz konform?
        alert((variable+"").length);
        oder
        alert(variable.toString().length);

        Habe gerade mal die IMHO "sauberere" toString()-Variante ohne Probleme unter Netscape 3.03 Gold probiert. Auch die NNs, IEs, Mozillas und Operas der letzten Jahre haben damit keine Probleme.

        MfG, Thomas

        1. Hallo,

          welche methode ist den sicherer?
          kommen die browser mit beiden lösungen aus oder ist eine nicht ganz konform?
          alert((variable+"").length);
          oder
          alert(variable.toString().length);

          Habe gerade mal die IMHO "sauberere" toString()-Variante ohne Probleme unter Netscape 3.03 Gold probiert. Auch die NNs, IEs, Mozillas und Operas der letzten Jahre haben damit keine Probleme.

          MfG, Thomas