Felix Riesterer: getElementsByClassName

Beitrag lesen

Lieber blumentopf,

Fehlt da vielleicht noch ein Zusatz, um die Funktion als Methode verfügbar zu machen? Ich habe leider bei der von Felix Riesterer verlinkten Diskussion etwas den Boden verloren, und auch nicht ganz kapiert, welches jetzt am Ende die nutzbare Variante war.

zuerst die Methode, die ich benutze:

var getElementsByClassName = function (className, element) {  
    element = element ? element : document;  
  
    var muster = new RegExp("(^|\\s)" + className + "(\\s|$)");  
    var alles = element.getElementsByTagName("*");  
    var gefunden = new Array();  
    var i;  
  
    for (i = 0; i < alles.length; i++) {  
        if (alles[i] && alles[i].className && alles[i].className != "") {  
            if (alles[i].className.match(muster))  
                gefunden.push(alles[i]);  
        }  
    }  
  
    return gefunden;  
}

Du kannst ja prüfen, ob document.body.getElementsByClassName existiert:

if (document.body.getElementsByClassName) {  
    // existiert nativ  
    var gesucht = meinElement.getElementsByClassName("hidden");  
} else {  
    // existiert nicht nativ -> Workaround  
    var gesucht = getElementsByClassName("hidden", meinElement);  
}

Wenn dem so ist, dann kannst Du bei jedem HTML-Elementobjekt diese Methode voraussetzen (es sei denn, diese Methode wurde durch eine andere von Dir eingesetzte Bibliothek eingeführt). Alternativ kannst Du auch einfach darauf pfeifen, ob die Methode nativ zur Verfügung steht, und einfach immer obige Funktion anwenden.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)