本文探讨了在JavaScript中动态控制元素显示时,将style.display设置为空字符串""导致无效的问题。通过对比分析,指出当CSS中定义了display:none时,直接设为空字符串无法恢复显示,而应显式指定如"block"或"inline"等具体值,或通过内联样式覆盖CSS规则来解决问题。
本文详细介绍了解决JavaScript中style.display属性设置为空字符串无效问题的方法,供读者参考。
问题描述
一、问题描述:
在JavaScript开发中,我们常需动态控制div元素的显示或隐藏。若尝试通过设置style.display=""来恢复元素显示,可能会发现该操作并未生效。
参考以下代码示例:
代码如下:
<style>
#name
{
display:none;
}
</style>
</head>
<body>
<div id="name" >
My name is smile.
</div>
</body>
</html>
<script>
window.onload=function(){
document.getElementById('name').style.display="";
alert("test");
}
</script>
上述代码中,CSS将id为name的div设置为隐藏状态。页面加载完成后,JavaScript试图通过设置style.display=""来显示该元素。逻辑上看似正确,但界面仍保持空白,未显示内容。
解决方法
二、解决方法:
尝试使用xxx.style.display="block",结果元素成功显示。
对比style.display=""与style.display="block"的区别:后者明确指定为块级显示并换行,而前者为空字符串。在本例中,仅设空字符串无法恢复显示,需明确指定显示类型。除使用"block"外,另一种解决方案是将CSS样式直接内联到标签中,例如:
代码如下:
<div id="name" style="display:none" >
My name is smile.
</div>
<script>
document.getElementById('name').style.display="";
</script>
将id为name的样式通过内联方式嵌入标签后,无论设置style.display=""还是"block",均可正常显示元素。
希望本文所述对大家基于javascript的web程序设计有所帮助。