molily: Geniale Cross-Browser Funktion (?)

Beitrag lesen

Hallo,

Bin da eben auf eine Funktion gestoßen, die angeblich so gut wie jedes Element anhand eines übergebenen id - oder name-Attributs zurückgeben kann.

Allgemein würde ich empfehlen, direkte Ansprechweisen zu erlernen und die zu verwenden. Wenn man nicht abwärtskompatibel schreiben muss, deckt getElementById das meiste ab. Es gibt ja nichts einfacheres als die Grundregel, einem Element eine ID zu verpassen und es darüber anzusprechen.

Ansprechen über name ist m.M.n. weder nötig noch sinnvoll, Formularfelder sind da vielleicht eine Ausnahme, weil document.forms.name.elements.name recht sprechend ist. Ansonsten: One getElementById to rule them all!

Das Script stammt aus Prä-DOM-Zeiten und das meiste ist einfach nicht mehr nötig. Sowas ist auch einfach problematisch:

//check for frames, variables or functions
  if( !oFrame && window[oName] ) { return window[oName]; }

Das liefert mir im Zweifelsfall keine Elemente zurück, sondern irgendwelche Objekte im globalen Scope... Aber das ist auch nett:

//check for images, forms, layers
if( oDoc[oName] ) { return oDoc[oName]; }

window.document hat ohne Bilder und Formulare ca. 145 Member, keines davon ist ein Element mit einer bestimmten ID.

Dass das Script in allen Fensterobjekten sucht, die es nur zu fassen kriegt, halte ich auch eher für einen Nachteil. Wenn man Funktionen wie gibmirirgendwasirgendwomitdemnamen("bla") nutzt, ist der Code unverständlich, unzuverlässig und Fehlersuche unmöglich.

Das Ding soll Cross-Browser-tauglich sein (Stand Januar 2008)

Eher Stand 2001. ;)

Man braucht sich erst einmal keine Gedanken um den richtigen Aufruf der richtigen Methoden für alle möglichen Elemente zu machen, wenn es denn funktioniert.

Es gibt realistischerweise diese Fälle:
Gib mir ein Element mit einer ID,
gibt mir ein Formular mit einem Namen (wobei man heuzutage auch einfach IDs vergeben kann),
gibt mir ein Frame mit einem Namen, darin dann ein Element, siehe oben.

Ich muss mir also keine großen Gedanken machen, sondern zweieinhalb Ansprechweisen kennen und kann dann auch eindeutigen (!) Code schreiben, bei dem ganz klar ist, was ich bekomme (oder nicht bekomme, wenn das, was ich genau suche, nicht da ist oder ich nicht darauf zugreifen kann).

Mathias