Probleme mit typeof

Orakel

Erfahrenes Mitglied
Hallo zusammen.

Ich habe gestern gelernt ;), dass das "name" Attribut kein Universalattribut ist. Nun habe ich mir gedacht ok nehme ich halt das "id" Attribut. In einem Javascript muss ich nun prüfen, welche HTML-Elemente mit einer bestimmten ID vorhanden sind. Da nun die ID eindeutig sein muss, habe ich eine Art fortlaufende ID im HTML-Code eingebracht. z. B. Bei Zellen

erste Zelle: id="td_1" nächste Zelle: id="td_2" usw.
Das Javascript sieht wie folgt aus:
Code:
function ShowExample()
{
  var oElement;
  var szElementID;

  for( nCounter = 1; nCounter <= 5; nCounter ++ )
  {
    szElementID = "td_" + nCounter;
    oElement = parent.example.document.getElementById( szElementID );
    if( typeof oElement == "object" )
      alert( typeof oElement + "\n|" + oElement + "|\n" + szElementID );
  }
}

Wieso ist oElement immer vom Typ "object", obwohl es kein td_3 und folgende gibt? Bzw. Wie kann ich nun prüfen, ob es ein Element mit einer bestimmten ID gibt?

Danke im voraus für jeden Tip

Gruß
Das Orakel
 
Zuletzt bearbeitet:
Das habe ich mich auch schon des Öfteren gefragt, und darüber geärgert.
Du könntest bspw. die Sache mit einem try/catch-Statements lösen, also einfach auf eine Eigenschaft des Objektes zugreifen, und mit catch den Fehler abfangen.

Hast du schon mal über meinen vorschlag von gestern nachgedacht... getElementsByClassname() ?
 
Hi Sven,

Danke für die rasche Antwort.

das mit try/catch werd ich mal probieren.

Hast du schon mal über meinen vorschlag von gestern nachgedacht... getElementsByClassname()

Ganz ehrlich? ;) Bis jetzt noch nicht. Aber wie ich das sehe, werde ich das wohl in Angriff nehmen. Das mit dem Erzwingen eines Fehlers empfinde ich eher als unsaubere Programmierung. (Ist ne persönliche Einstellung von mir)

Grüße
vom nicht Fehler erzwingen wollenden Orakel ;)

P.S.: Den Thread lass ich noch ne weil unerledigt. Vielleicht fällt ja jemand noch was ein.
 
Zuletzt bearbeitet:
Hi zusammen,

manchmal hilft einfach Frechheit. Lt. SelfHTML (hoffentlich ist das keine Werbung) kann man ja prüfen, ob ein Objekt existiert (z. B. if( document.all ) ). Naja, und das hab ich einfach mal auf mein Problem adaptiert:

Code:
function ShowExample()
{
  var oElement;
  var szElementID;

  for( nCounter = 1; nCounter <= 5; nCounter ++ )
  {
    szElementID = "dark_" + nCounter;
    oElement = parent.example.document.getElementById( szElementID );
    if( oElement )
      alert( "Element " + szElementID + " found" );
    else
      alert( "Element " + szElementID + " not found" );
  }
}

Ich habs jetzt mit IE und Netscape 7.02 probiert, und es klappt so wie ich mir das vorstelle. Sollte jemand mal sehr viel Zeit haben, und Firefox oder Opera einsetzen, würde mich interessieren, ob's da genauso funktioniert.

Vielleicht kann's ja der eine oder andere gebrauchen.

Gruß
the happy Orakel
 

Neue Beiträge

Zurück