How can I erase all inline styles with javascript and leave only the styles specified in the css style sheet?

JavascriptJqueryCssInline

Javascript Problem Overview


If I have the following in my html:

<div style="height:300px; width:300px; background-color:#ffffff;"></div>

And this in my css style sheet:

div {
    width:100px;
    height:100px;
    background-color:#000000;
}

Is there any way, with javascript/jquery, to remove all of the inline styles and leave only the styles specified by the css style sheet?

Javascript Solutions


Solution 1 - Javascript

$('div').attr('style', '');

or

$('div').removeAttr('style'); (From Andres's Answer)

To make this a little smaller, try this:

$('div[style]').removeAttr('style');

This should speed it up a little because it checks that the divs have the style attribute.

Either way, this might take a little while to process if you have a large amount of divs, so you might want to consider other methods than javascript.

Solution 2 - Javascript

Plain JavaScript:

You don't need jQuery to do something trivial like this. Just use the .removeAttribute() method.

Assuming you are just targeting a single element, you can easily use the following: (example)

document.querySelector('#target').removeAttribute('style');

If you are targeting multiple elements, just loop through the selected collection of elements: (example)

var target = document.querySelectorAll('div');
Array.prototype.forEach.call(target, function(element){
    element.removeAttribute('style');
});

Array.prototype.forEach() - IE9 and above / .querySelectorAll() - IE 8 (partial) IE9 and above.

Solution 3 - Javascript

$('div').removeAttr('style');

Solution 4 - Javascript

I was using the $('div').attr('style', ''); technique and it wasn't working in IE8.

I outputted the style attribute using alert() and it was not stripping out inline styles.

.removeAttr ended up doing the trick in IE8.

Solution 5 - Javascript

This can be accomplished in two steps:

1: select the element you want to change by either tagname, id, class etc.

var element = document.getElementsByTagName('h2')[0];

  1. remove the style attribute

element.removeAttribute('style');

Solution 6 - Javascript

If you need to just empty the style of an element then:
element.style.cssText = null;
This should do good. Hope it helps!

Solution 7 - Javascript

You could also try listing the css in the style sheet as !important

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMattView Question on Stackoverflow
Solution 1 - JavascriptTyler CarterView Answer on Stackoverflow
Solution 2 - JavascriptJosh CrozierView Answer on Stackoverflow
Solution 3 - Javascriptandres descalzoView Answer on Stackoverflow
Solution 4 - JavascriptrtvengeView Answer on Stackoverflow
Solution 5 - JavascriptJRulleView Answer on Stackoverflow
Solution 6 - JavascriptTushar ShuklaView Answer on Stackoverflow
Solution 7 - JavascriptBoringCodeView Answer on Stackoverflow