style.display =“'实际上做了什么?
在研究了这个问题几个小时之后,我发现切换页面元素的显示效果最好的方法之一就是执行如下操作:
// showing document.getElementById('element').style.display = ''; // hiding document.getElementById('element').style.display = 'none';
简单的问题: style.display = ''
实际上做了什么?
是否“重置”原来的显示属性?
还是它删除显示属性,从而使用默认样式显示?
……………………………………
很高兴知道:有没有人知道任何关于这种文件的任何链接?
(是的,我有Google-d这个问题,但我可能没有input正确的search字词,而是继续提供完全不相关的search结果。)
感谢您的任何build议或链接。
是的,通过消除内联“display:none”,将元素的display属性重置为默认值,导致元素返回其显示属性,如页面的排名CSS规则所定义。
例如,这里是一个ID为“myElement”的<div>
。
<div id="myElement"></div>
一个<div>
的默认设置是display:block
。 在我们的样式表中,假设我们指定你的<div>
被显示为table
:
div#myElement { display:table; }
加载页面时, <div>
显示为table
。 如果你想用脚本隐藏这个<div>
,你可以做任何这些:
// JavaScript: document.getElementById("myElement").style.display = 'none'; // jQuery: $("#myElement").toggle(); // if currently visible $("#myElement").hide(); $("#myElement").css({"display":"none"});
所有这些都具有相同的效果:向您的<div>
添加内联style
属性:
<div id="myElement" style="display:none"></div>
如果你想再次显示元素,其中的任何一个都可以工作:
// JavaScript: document.getElementById("myElement").style.display = ""; // jQuery: $("#myElement").toggle(); // if currently hidden $("#myElement").show(); $("#myElement").css({"display":""});
这些从内联style
属性中删除display
CSS属性:
<div style=""></div>
由于内联样式不再指定display
,因此<div>
会返回显示为table
,因为这就是我们在样式表中所做的。 该<div>
不会恢复为显示为block
因为我们的CSS覆盖默认设置; 消除内联display
属性不会否定我们样式表中的规则。
对于笑声,这里是我用来validation我的答案的Google查询: javascript style display empty string default
…和几个链接,这里提到:
http://jszen.blogspot.com/2004/07/table-rowsrevealed.html
http://www.harrymaugans.com/2007/03/05/how-to-create-a-collapsible-div-with-javascript-and-css/ (不在文章中,但在评论部分)
它将display
样式设置为该元素的默认值。 对于大多数元素(如果不是全部的话),默认值不是none
。
它将删除display属性的值,以便使用默认值。
它不会重置原始的显示属性。
如果你例如有这样的:
<span id="test" style="display:block;">b</span>
做到这一点:
document.getElementById('test').style.display = 'inline'; document.getElementById('test').style.display = '';
用于元素的display
样式最终是inline
因为这是该元素的默认值,所以不会重置为HTML代码中指定的样式。
它将该元素显示的css设置为null
,从而基本上清除了设置的内容,并将其恢复为默认值。