Ist getElementByClass sicher zu bedienen über Web-Browser wie getElementById?
Ist getElementByClass sicher zu bedienen über Web-Browser wie getElementById?
Update
Derzeit verwenden:
window.opener.document.getElementById
Aber ich möchte verweisen auf das Objekt durch classname (es wird nur 1 element, classname).
- Wenn es nur eine wäre es effizienter sein, um es von ID, da die Suche durch den DOM für eine bestimmte Klasse ist nicht ideal, aber wenn es sein muss würde ich empfehlen, ein framework wie jQuery
Du musst angemeldet sein, um einen Kommentar abzugeben.
getElementsByClassName
ist leider keine zuverlässige cross-browser. Es unterstützt derzeit die aktuellen Versionen von Firefox, Opera, Safari und Chrome, jedoch nicht in Internet Explorer oder Konqueror, nach Quirksmode.Wenn Sie es verwenden möchten, cross-browser, müssen Sie haben, Ihre eigene Umsetzung für Browser, die dies nicht unterstützen, wie in PPK ' s blog:
So, wie schon von anderen erwähnt,
getElementsByClassName
ist in Internet Explorer nicht verfügbar.Sehen die Anpassen der DOM Abschnitt Dokument Objekt Modell-Prototypen, Teil 1: Einführung Informationen zur Umsetzung der Funktionalität im IE.
Element.prototype
oderHTMLDocument.prototype
im IE6 (oder, ich glaube, 7).IIRC,
getElementsByClassName
wurde in Firefox 3, Safari 3.1, und wurde in Chrome seit Anfang an. Ich weiß nicht, ob/Wann es Hinzugefügt wurde die Oper, aber es gibt es nicht in Internet Explorer an alle. (Obwohl es kann Hinzugefügt werden, IE8 durch die Erweiterung der DOM-Prototypen; siehe Grant ' s Antwort.)In anderen Worten, wenn Sie möchten, eine cross-browser -
getElementsByClassName
müssen Sie zu Rollen Sie Ihre eigenen oder verwenden Sie einen Rahmen.Wenn Sie wirklich wollen, es zu benutzen, könnten Sie testen, um zu überprüfen, ob das Objekt unterstützt getElementsByClassname vor, um zu verwenden, und fallen zurück auf eine JS-Implementierung der Funktion, wenn der browser es nicht unterstützt.
Ich würde vorschlagen, die Verwendung einer wrapper-Bibliothek, wie prototype.js oder jQuery, die beide unterstützen ein css-selector-Modell, und die Griff-browser-Kompatibilität Probleme (IE6-7 wobei die größeren Probleme in der Regel)