基础算法
数据库
Javascript
HTML 编程
SVG
附录
HTML 中的hidden
属性用于显示和隐藏元素,如e.hidden = true
。但是当元素设置了display
样式时,不论是在元素样式属性style
中设置还是在 CSS 类中设置,则hidden
属性就会失去作用。所以,要想继续使用 hidden 属性,必须解决display
样式的问题。解决问题的代码如下:
以下是代码解释。
Object.defineProperties
为所有元素HTMLElement
重新定义hidden
属性,当然使用Object.defineProperty
也可以。hidden
属性值为true
时,那么元素上会多一个空值hidden
属性,如
,这就是元素隐藏和显示的标志。可以用setAttribute('hidden', '')
进行设置隐藏,当然这个属性无论你设置成什么值元素总会隐藏,所以要用removeAttribute('hidden')
取消隐藏。this.hidden = true
或this.hidden = false
进行隐藏和显示,会造成堆栈溢出,因为会不断回调自身。hidden
要设置为true
时,如果在元素style
属性中设置了display
样式时,则通过style-display
属性暂时存储display
的值,因为不知道原本设置的什么值。如果 CSS 类内设置了display
样式,用window.getComputedStyle
方法可以获得,则设置inbox-display
属性,这个值不需要暂存,因为修改不了。style-display
属性,则把这个属性的值重新赋值给style.display
即可,需要使用完移除style-display
属性。如果有inbox-style
属性,则用style.display = ''
显示元素,然后移除inbox-display
属性。对于页面初始化时,可以这样做,就是重新设置一遍。
(本文完)