为什么用class方式定义对象隐藏后用上面的代码控制显示/隐藏,第一次要点两下才有效果?
解决思路:
因为用style对象只能捕获到对象的内嵌样式设置,对于以选择符方式定义的样式,就必须改用currentStyle对象了,因为currentStyle对象是只读的,所以要设置的话还必须用runtimeStyle对象。
具体步骤:
<style>
.demo{display:none}
</style>
<button onClick="with(demo.style)display=display==’none’?’block’:’none’">显示/隐藏</button>
<button onClick="with(demo)runtimeStyle.display=currentStyle.display==’none’?’block’:’none’">显示/隐藏</button>
<span id="demo" class="demo">显示/隐藏</span>
特别提示 代码运行后,单击第一个按钮,将发现,需要单击两次才能显示对象,刷新后再单击第二个按钮,只用一次就可以使对象显示,效果如图2.1.6.2所示。
图2.1.6.2 currentStyle和runtimeStyle对象的应用
特别说明
在通过脚本控制对象的CSS属性时必须注意,用style对象不能得到非内嵌的样式设置,只能通过currentStyle读取,再通过runtimeStyle对象修改设置,另外还需要注意的是currentStyle属性是只读的,不能通过currentStyle对对象样式进行修改或设置,要修改或设置对象样式,必须使用style或runtimeStyle对象。
style 代表给定元素所有可能的内嵌样式的当前设置。
currentStyle 代表在全局样式表、内嵌样式和 HTML 标签属性中指定的对象格式和样式。
runtimeStyle 代表居于全局样式表、内嵌样式和 HTML 标签属性指定的格式和样式之上的对象的格式和样式。