I have a div element and would like to append new style attributes to it. I have tried to do it like this:
element.setAttribute('style', 'property: value');
And it works, but if that element already had styles applied, they will all get overwritten.
Lets say I have this situation:
HTML:
<div id="styled"></div>
JavaScript:
var styled = document.getElementById('styled');
styled.setAttribute('style', 'display: block');
This works, but if I need to append another style lets say:
styled.setAttribute('style', 'color: red');
I would then lose style added in previous setAttribute() method!
How can one append styles to elements with JavaScript?
Thanks!
JavaScript setAttribute() example How it works: First, select the button with the id btnSend by using the querySelector() method. Second, set the value of the name attribute to send using the setAttribute() method. Third, set the value of the disabled attribute so that when users click the button, it will do nothing.
To create an element with attributes: Use the document. createElement() method to create the element. Use the setAttribute() method to add one or more attributes to the element.
Using setAttributeIf the attribute is already assigned to an element, the value is overwritten. If not, elements are assigned a new attribute with indicated values and name.
The "setAttribute is not a function" error occurs for multiple reasons: calling the setAttribute() method on a value that is not a DOM element. placing the JS script tag above the code that declares the DOM elements. calling the setAttribute method on a jQuery object (should use attr() instead).
Well, if using setAttribute
you could just take the previous value by getAttribute
and concat them:
element.setAttribute('style', element.getAttribute('style')+'; color: red');
However, that's not the best practise for most HTML attributes, which are usually reflected as a property and you could just do something like element.className += " …"
. For inline styles in particular, you'd use the .style
property that allows you to set and unset every single CSS property:
element.style.display = 'block';
element.style.color = 'red';
Update the style
object of the dom-node rather than using setAttribute
:
document.getElementById("styled").style["color"] = "red";
More information: http://www.w3schools.com/jsref/dom_obj_style.asp
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With