Manchmal vermisse ich die Möglichkeit alle CSS-Elemente erfassen zu können, denen der gleiche Klassenname zugewiesen wurde.

Im SelfHTML Forum wurde ich dann fündig, denn dort suchte jemand genau dazu ebenfalls eine Lösung.

Es wird dabei über alle Elemente eines Dokuments hinweg eine Abfrage der Eigenschaft className durchgeführt. Beim IE erreicht man das durch die Referenzen document.all auf alle Elemente, wohingegen Netscape 6+ / Mozilla und Opera7 das mit Hilfe von document.getElementsByTagName(„*“) ermöglichen.

Beim Aufruf wird der Funktion ein Klassenname übergeben, anhand dessen ein Objekt-Array (ret_obj) erstellt und zurückgegeben wird.


function getElementsByClassName(class_name)
{
	var all_obj,ret_obj=new Array(),j=0,teststr;
	if(document.all)all_obj=document.all;
	else if(document.getElementsByTagName && !document.all)all_obj=document.getElementsByTagName("*");
	for(i=0;i<all_obj.length;i++)
	{
		if(all_obj[i].className.indexOf(class_name)!=-1)
		{
			teststr=","+all_obj[i].className.split(" ").join(",")+",";
			if(teststr.indexOf(","+class_name+",")!=-1)
			{
				ret_obj[j]=all_obj[i];
				j++;
			}
		}
	}
	return ret_obj;
}

Meiner Meinung nach eine tolle Alternative, wenn man per Javascript eine ganze Klasse umformatieren möchte.