Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change element display none back to default style value JS

I have a function in JS that hides the element parsed:

function hide(id){
  document.getElementById(id).style.display = "none";
}

How can I create a function that brings back the element to the default style value. For instance a div display property is "block" as for an image is "inline-block", other elements are "inline" or lists are "list-item" How can I bring them back their default state?

function show(id){
  document.getElementById(id).style.display = "?????";
}

I know how to do it in Jquery but it is not an option.

In CSS there might be styles for the elements including style:none, which need to be overwritten to the default value.

Since there is CSS in my example making style.display = '' eliminates the style added with JS but gets back to whatever style is added in CSS, I want to bring it back to its default value even before assigning styles with CSS.

I tried this as it was suggested in a link in one of the comments:

elem = document.getElementById(id);
var theCSSprop = window.getComputedStyle(elem,null).getPropertyValue("display");

but in this case 'theCSSprop' returns "none" for a div, when I expect "block"

Any ideas? Thanks.

like image 464
multimediaxp Avatar asked Jan 30 '14 13:01

multimediaxp


People also ask

What is the opposite of display none in JavaScript?

opposite of 'none' is 'flex' while working with react native. Show activity on this post. visibility:hidden will hide the element but element is their with DOM. And in case of display:none it'll remove the element from the DOM.

Does display none Remove from DOM?

With display:none, it is effectively removed from the DOM. Hiding DOM elements with CSS is a common task. Some wonder whether they should use visibility:hidden or display:none.

How can the style of an element be changed in JavaScript?

Select the element whose style properties needs to be change. Use element. style property to set the style attribute of an element. Set the properties either by using bracket notation or dash notation.


1 Answers

You need just assign it to empty value:

document.getElementById(id).style.display = "";

Or using removeProperty method:

document.getElementById(id).style.removeProperty( 'display' );

But note that removeProperty will not work on IE<9.

If you want to get original CSS value you will need probably to get it from empty <iframe> element. I created example on jsFiddle how to get current value using getComputedStyle and iframe value on jsFiddle.

Please note that getComputedStyle not support old versions of IE. It support IE9+.

For IE8 you should use Element.currentStyle

like image 91
antyrat Avatar answered Sep 19 '22 19:09

antyrat