TomKn: Fehler im Stringvergleich

Hallo.

Ich möchte eine If-Schleife mit einem Stringvergleich starten:

var length=document.downl.datei.length;

if(length != "undefined")
  {
    mach was
  }

else
  {
    mach auch was
  }

Das problem ist: length wird mit "undefined" gefüllt falls "Datei" nur ein Element hat. Doch auch in dem Fall, wird immer nur das "else" ausgeführt. Irgendwie versagt der Vergleich

help

  1. Hi,

    da hast du eine relativ heikle Kombination (aus meiner Sicht) gewählt. Undefined ist ein Zustand, kein String. Undefined hat eine String-Repräsentation die du dir ausgeben lassen kannst (dann steht da undefined). Aber aus zweiterem zu schließen du könntest diesen Vergleich machen halte ich für gewagt.
    Pack direkt alles in das IF, dann passt es auch:
    if (document.downl.datei.length)
        ...
    else
        ...

    MfG
    Rouven

    --
    -------------------
    ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
    1. Gute Idee!

      Ich habe es zwar jetzt auch mit Undefined geknackt. aber deine Lösung ist sauberer

      Hi,

      da hast du eine relativ heikle Kombination (aus meiner Sicht) gewählt. Undefined ist ein Zustand, kein String. Undefined hat eine String-Repräsentation die du dir ausgeben lassen kannst (dann steht da undefined). Aber aus zweiterem zu schließen du könntest diesen Vergleich machen halte ich für gewagt.
      Pack direkt alles in das IF, dann passt es auch:
      if (document.downl.datei.length)
          ...
      else
          ...

      MfG
      Rouven

      1. Ich habe es zwar jetzt auch mit Undefined geknackt. aber deine Lösung ist sauberer

        Zur Korrektur:

        das was du hast ist ein String und down1.datei vermutlich ein Formularelement, dann ist dein Zugriff falsch:

        var length = document.downl.datei.value.length;  
        if(!length)  
        {  
        // String ist leer  
        }  
        else  
        {  
        // String ist nicht leer  
        }  
        
        

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Hallo,

          ich vermute(!) das hatte schon alles seine Richtigkeit.
          Aus meiner Sicht war der Hintergrund zu prüfen, ob es nur ein Element namens datei gibt oder eben mehrere, sprich ob ein Array mit length-Eigenschaft entstanden ist oder eben nicht.

          MfG
          Rouven

          --
          -------------------
          ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
          1. ich vermute(!) das hatte schon alles seine Richtigkeit.
            Aus meiner Sicht war der Hintergrund zu prüfen, ob es nur ein Element namens datei gibt oder eben mehrere, sprich ob ein Array mit length-Eigenschaft entstanden ist oder eben nicht.

            Stimmt, das wäre die Möglichkeit mit der Collection, da aber im Ausgangsposting von einem Stringvergleich die Rede war, ging ich die ganze Zeit davon aus, dass er testen will ob ein String eingeben wurde.

            Dann sollte auch der test auf typeof length == 'undefined' gehen. Wobei !length kürzer ist.

            Struppi.

            --
            Javascript ist toll (Perl auch!)
  2. Ich möchte eine If-Schleife mit einem Stringvergleich starten:

    Die if Bedingung ist keine Schleife.

    var length=document.downl.datei.length;

    if(length != "undefined")

    length ist niemals nicht "undefined", du verwechselst das mit typeof length

    Jetzt ist die Frage, was document.down1.datei ist?
    Wenn es die Eigenschaft length hat, ist es entweder ein Array, ein String oder eine Collection und worauf du testen willst.

    Das problem ist: length wird mit "undefined" gefüllt falls "Datei" nur ein Element hat.

    nein, wenn es das length Attribut gibt für das Objekt ist length 0-x, wobei x die anzahl der Elemente + 1 ist.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. hi,

      nein, wenn es das length Attribut gibt für das Objekt ist length 0-x, wobei x die anzahl der Elemente + 1 ist.

      Wie meinen?
      Da komm ich gerade nicht mit.

      Soll das Null minus x heißen? Nee, wohl kaum.

      Null bis x? Dann aber x = Anzahl Elemente minus eins.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. nein, wenn es das length Attribut gibt für das Objekt ist length 0-x, wobei x die anzahl der Elemente + 1 ist.

        Wie meinen?
        Da komm ich gerade nicht mit.

        Soll das Null minus x heißen? Nee, wohl kaum.

        Null bis x? Dann aber x = Anzahl Elemente minus eins.

        Stimmt, so meinte ich das,

        Struppi.

        --
        Javascript ist toll (Perl auch!)