Sven: Was stimmt hier nicht?

Hallo!

Bei folgendem Skript beschwert er sich, die Variable "VideoS" sei nicht definiert. Egal, ob sie definiert wurde, oder nicht. Und selbst wenn nicht: Sollte die If-Abfrage am Anfang diesen Fehler nicht abfangen? Warum tut sie das nicht?

if(typeof VideoS[0] != "undefined")
{
for (var q=0;q<VideoS.length;q++)
{
document.write("</TR>");
document.write("<TR>");
document.write("<TD colspan='" + Spalten + "' class='standard'><a href='/hf/hr3/galerie/" + EventKategorie + "/img/" + EventName + "_video" + (q+1) + ".mpg'>" + VideoS[q][1] + "</a></TD>");
}
}

Habt Ihr eine Ahnung, wo der Fehler liegt?

Gruß,
Sven

  1. Hallo!

    Bei folgendem Skript beschwert er sich, die Variable "VideoS" sei nicht definiert. Egal, ob sie definiert wurde, oder nicht. Und selbst wenn nicht: Sollte die If-Abfrage am Anfang diesen Fehler nicht abfangen? Warum tut sie das nicht?

    if(typeof VideoS[0] != "undefined")
    {
    for (var q=0;q<VideoS.length;q++)
    {
    document.write("</TR>");
    document.write("<TR>");
    document.write("<TD colspan='" + Spalten + "' class='standard'><a href='/hf/hr3/galerie/" + EventKategorie + "/img/" + EventName + "_video" + (q+1) + ".mpg'>" + VideoS[q][1] + "</a></TD>");
    }
    }

    Habt Ihr eine Ahnung, wo der Fehler liegt?

    Gruß,
    Sven

    Hi Sven,

    Dein if prüft nur, ob der erste Wert im Array "undefined" ist. Das ist aber unnötig, weil dann VideoS.length gleich 0 ist und die for-Schleife gar nicht startet.

    Du musst irgendwo am Anfang dein Array initialisieren mit:
    var VideoS=new Array;

    Ich hoffe, das hilft.

    Gruß

    Axel

    1. Hallo!

      Dein if prüft nur, ob der erste Wert im Array "undefined" ist. Das ist aber unnötig, weil dann VideoS.length gleich 0 ist und die for-Schleife gar nicht startet.

      Du musst irgendwo am Anfang dein Array initialisieren mit:
      var VideoS=new Array;

      Die Variable wird in einer anderen Datei definiert, auf die diese hier zugreift. Und mit dieser Abfrage soll das Skript prüfen, ob diese Variable definiert ist. Wenn ja, soll sie den Inhalt zeigen, wenn nein, im Skript fortfahren. Das funktioniert an anderer Stelle mit anderen Variablen wunderbar, nur hier nicht. Hier zum Beispiel geht's:

      if(typeof Headline[i] != "undefined")
      {
      document.write("</tr>");
      document.write(" ");
      document.write("<tr>");
      for (var SpaltenZaehler=0;SpaltenZaehler<Spalten;SpaltenZaehler++) { document.write("<TD width='100' align='center' valign='middle'><img src='/img/platzhalter_10x10.gif' width='100' height='5'></TD>"); }
      document.write("</tr>");
      document.write("<TR><TD colspan='" + Spalten + "'><p class='aqua'>" + Headline[i][1] + "</P></TD></TR>");
      Zaehler = "0";
      }

      Ist doch im Grunde nix anderes, als die Abfrage, die jetzt nicht funktioniert. Was ich gern wüßte: Warum geht die hier, aber die andere, die im Grunde doch genauso ist, nicht?

      Gruß,
      Sven

      1. Das funktioniert an anderer Stelle mit anderen Variablen wunderbar, nur hier nicht. Hier zum Beispiel geht's:

        if(typeof Headline[i] != "undefined")
        {
        document.write("</tr>");
        document.write(" ");
        document.write("<tr>");
        for (var SpaltenZaehler=0;SpaltenZaehler<Spalten;SpaltenZaehler++) { document.write("<TD width='100' align='center' valign='middle'><img src='/img/platzhalter_10x10.gif' width='100' height='5'></TD>"); }
        document.write("</tr>");
        document.write("<TR><TD colspan='" + Spalten + "'><p class='aqua'>" + Headline[i][1] + "</P></TD></TR>");
        Zaehler = "0";
        }

        Ist doch im Grunde nix anderes, als die Abfrage, die jetzt nicht funktioniert. Was ich gern wüßte: Warum geht die hier, aber die andere, die im Grunde doch genauso ist, nicht?

        Gruß,
        Sven

        Hi Sven,

        bist du sicher, dass if(typeof Headline[i] != "undefined") jemals mit einem völlig undefinierten Array Headline konfrontiert wurde? Dann müsste nämlich auch hier ein Fehler auftreten. Wieso kannst du nicht sicherstellen, dass das Array initialisiert wird. Dann prüfst du einfach, ob es leer ist mit VideoS.lenght.

        Gruß

        Axel

  2. Hallo

    if(typeof VideoS[0] != "undefined")

    wenn VideoS undefiniert ist, muss hier logischerweise ein Fehler kommen!

    besser:
    if (VideoS && VideoS[0]) ...

    Gruss,
    Kube

    1. if(typeof VideoS[0] != "undefined")
      wenn VideoS undefiniert ist, muss hier logischerweise ein Fehler kommen!

      Aber warum funktioniert dann das hier:

      if(typeof Headline[i] != "undefined")

      Das ist doch auch nicht anders, oder?

      Gruß,
      Sven

      1. if(typeof VideoS[0] != "undefined")
        wenn VideoS undefiniert ist, muss hier logischerweise ein Fehler kommen!

        Aber warum funktioniert dann das hier:

        if(typeof Headline[i] != "undefined")

        Das ist doch auch nicht anders, oder?

        der Unterschied ist, das der Array Headline wohl immer definiert ist.
        Kannst du dich darauf immer verlassen? Nur dadurch klappt die Array-Abfrage Headline[i] auch.

        Gruß,
        Sven

        1. der Unterschied ist, das der Array Headline wohl immer definiert ist.
          Kannst du dich darauf immer verlassen? Nur dadurch klappt die Array-Abfrage Headline[i] auch.

          AAAAHHH! Ich Depp! Hab eine Zeile übersehen.

          SORRY, vergeßt das Ganze! :-/

          Gruß,
          Sven