Jeena Paradies: Style mehrerer Divs der gleichen Klasse ändern

Beitrag lesen

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