Hallo,
Du kannst dir aber eine solche Methode schreiben bzw. eine geschriebene verwenden.
Noch netter (allgemeingültiger) ist Robert Nymans Methode:
function getElementsByClassName(oElm, strTagName, oClassNames){
var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
var arrReturnElements = new Array();
var arrRegExpClassNames = new Array();
if(typeof oClassNames == "object"){
for(var i=0; i<oClassNames.length; i++){
arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
}
}
else{
arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
}
var oElement;
var bMatchesAll;
for(var j=0; j<arrElements.length; j++){
oElement = arrElements[j];
bMatchesAll = true;
for(var k=0; k<arrRegExpClassNames.length; k++){
if(!arrRegExpClassNames[k].test(oElement.className)){
bMatchesAll = false;
break;
}
}
if(bMatchesAll){
arrReturnElements.push(oElement);
}
}
return (arrReturnElements)
}
Damit kann man dann zum Beispiel alle links mit der klasse myclass holen:
getElementsByClassName(document, "a", "myclass");
Oder natürlich auch alle Elemente mit der Klasse myclass:
getElementsByClassName(document, "*", "myclass");
Oder sogar Alle divs innerhalb des Elements mit der ID "container", mit einer klasse "col" und einer "left":
getElementsByClassName(document.getElementById("container"), "div", ["col", "left"]);
Was vielleicht noch wünschenswert wäre, wäre so etwas wie man im CSS mittels: div#container.col.left macht, also dass das div mit der ID container auch noch gleichzeigtig beide Klassen haben muss, aber naja das vielleicht für die Zukunft ;-).
Grüße
Jeena Paradies