Fehler im Stringvergleich
TomKn
- javascript
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
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
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
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.
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
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.
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.
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
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.