Das Hinzufügen/Ändern des Stils der Elemente im Code ist eine schlechte Praxis. Heute möchten Sie den Hintergrund ändern Farbe und morgen möchten Sie den Hintergrund ändern Bild und übermorgen haben Sie beschlossen, dass es auch schön wäre, die Grenze .
Es ist mühsam, den Code jedes Mal zu bearbeiten, nur weil sich die Designanforderungen ändern. Und wenn Ihr Projekt wächst, wird das Ändern von js-Dateien noch mühsamer. Mehr Code, mehr Schmerz.
Versuchen Sie, die Verwendung von hart kodierten Stilen zu vermeiden, das spart Zeit und, wenn Sie es richtig machen, können Sie die Aufgabe "Farbe ändern" an jemand anderen vergeben.
Anstatt also direkte Eigenschaften des Stils zu ändern, können Sie CSS-Klassen zu Knoten hinzufügen/entfernen. In Ihrem speziellen Fall müssen Sie dies nur für den übergeordneten Knoten "div" tun und dann die Unterknoten per CSS gestalten. Es ist also nicht notwendig, spezifische Stileigenschaften auf DIV und H2 anzuwenden.
Ein weiterer Empfehlungspunkt. Versuchen Sie, Knoten nicht hartkodiert zu verbinden, sondern verwenden Sie dafür eine Semantik. Zum Beispiel: "Um Ereignisse zu allen Knoten hinzuzufügen, die die Klasse 'content' haben.
Abschließend möchte ich noch den Code nennen, den ich für solche Aufgaben verwenden würde:
//for adding a css class
function onOver(node){
node.className = node.className + ' Hover';
}
//for removing a css class
function onOut(node){
node.className = node.className.replace('Hover','');
}
function connect(node,event,fnc){
if(node.addEventListener){
node.addEventListener(event.substring(2,event.length),function(){
fnc(node);
},false);
}else if(node.attachEvent){
node.attachEvent(event,function(){
fnc(node);
});
}
}
// run this one when window is loaded
var divs = document.getElementsByTagName("div");
for(var i=0,div;div =divs[i];i++){
if(div.className.match('content')){
connect(div,'onmouseover',onOver);
connect(div,'onmouseout',onOut);
}
}
Und so sollte auch Ihr CSS sein:
.content {
background-color: blue;
}
.content.Hover{
background-color: red;
}
.content.Hover h2{
background-color : yellow;
}