2010-11-25 11 views
2

mein CodeWie mehrere .setAttribute auf einem einzigen Element

elem.setAttribute('style','background-color:' + l_DivBgcolor); 

und ich will auch, um eine Grenzfarbe gleich der Farbe des bgcolor hinzuzufügen .. mein Problem ist, wie füge ich eine andere Stil zum aktuellen Stil nach dem Einstellen einer bgcolor?

elem.setAttribute('style','border-color:' + l_DivBgcolor + '; background-color:' + l_DivBgcolor + ';'); 

Oder Sie könnten:

i

elem.setAttribute('style','border-color:' + l_DivBgcolor ); 

nach dem ersten setAttribute trien setzen, aber es entfernt die bgcolor ANG nur die Rahmenfarbe festgelegt ..

Antwort

6

kein Attribut Verwenden Sie verketten dafür. Attribute sind im IE falsch implementiert und sind fast nie das, was Sie brauchen. Wenn Sie dem style-Attribut zuweisen, werden auch vorhandene Inline-Stile gelöscht, einschließlich der durch das Skript festgelegten. Verwenden Sie die universell unterstützt style Eigenschaft statt:

elem.style.backgroundColor = l_DivBgcolor; 
elem.style.borderColor = l_DivBgcolor; 
1

kann mit dem getan werden versuchen:

elem.style.display.borderColor = lDivBgcolor; 
elem.style.display.backgroundColor = lDivBgcolor; 
+1

Der erste Ansatz wird nicht in IE arbeitet 6 oder 7 oder 8 im Quirks-Modus und wird auch vorhandene Inline-Stile in anderen Browsern zu löschen. Der zweite Ansatz ist der einzige vernünftige Weg, um es zu tun, außer dass Sie es falsch gemacht haben, indem Sie 'display.' einfügen. –

+0

* nickt * Ich schlage nicht vor, dass es der Weg nach vorne ist, Inline-Styling zu verwenden, einfach den Originalcode zu nehmen und ihn an die gestellte Frage anzupassen, aber Sie sind völlig richtig, es ist nicht die Art, es zu tun. Letzteres ... nun, es war eine Weile her, seit ich das gemacht hatte, und aus irgendeinem Grund dachte ich, dass es die Anzeigeeltern brauchen würde ... nicht sicher warum. – Arantor

-1

verketten sie einfach:

elem.setAttribute('style','background-color:' + l_DivBgcolor + ';border-color:' + l_DivBgcolor + ';'); 
-1

Da Sie das Style-Attribut ändern und nicht die Stileigenschaften des Elements direkt können Sie die Stile in einem String

var atValue = 'border-color:' + l_DivBgcolor + ';'; 
atValue += 'background-color:' + l_DivBgcolor + ';'; 

elem.setAttribute('style', atValue); 
1

Sie können hinzufügen (+ =) oder ersetzen (=) Inline-Style-Regeln mit style.cssText.

Beim Anhängen werden alle im ursprünglichen Stil vorhandenen Eigenschaften durch die neuen Werte ersetzt. Neue Eigenschaften werden hinzugefügt und alle im Original, aber nicht im Ersatz, bleiben unverändert.

elem.style.cssText+=';background-color:'+ l_DivBgcolor+';border-color:'+l_DivBgcolor; 
+0

Warum sollten Sie das tun, anstatt nur die Eigenschaften des 'style' Objektes zu benutzen? –

0

Verwenden Sie diese

elem.setAttribute('style','background-color:' + l_DivBgcolor+ ' border-color:' + l_DivBgcolor); 
0

Variable und Festcodewerte:

element.setAttribute('style','top:' + t + '; left:' + l + '; width:' + w + '; height:' + h + ';'); 
element.setAttribute('style','top: 0; left: 0 ; right: 0; bottom: 0; opacity: 0.7;'); 
Verwandte Themen