这对我不起作用,并且不起作用是指它不会在标签上显示任何内容....
document.getElementById('clubname').label.style.display = 'none';
我究竟做错了什么?
这对我不起作用,并且不起作用是指它不会在标签上显示任何内容....
document.getElementById('clubname').label.style.display = 'none';
我究竟做错了什么?
Labelable elements can have multiple labels, so the elements have a labels
property not a label
property.
But I don't know what the level of browser support is for this property currently.
破译你所拥有的:
document.getElementById('clubname')
将尝试返回 id 为“clubname”的元素。如果不存在这样的元素,它将返回null
。
.label
将尝试访问label
上面返回的对象的属性。如果是null
,将引发错误。
.style
将尝试访问style
上面返回的任何内容的属性。如果该值不是对象(或不可转换为对象)null
,undefined
则它会引发错误。
.display = 'none';
将访问或分配display
先前返回的对象的属性,并为其分配'none'
.
在 HTML5 中,有一类可标记元素具有labels
引用其关联标签的 NodeList 的属性。所以上面可能做的(如果它没有错误地完成并访问了相关标签NodeList的单个成员,例如...labels[0].style...
)是隐藏相关标签。如果元素是标签的子元素(它们经常是),它也会隐藏元素。
但该labels
属性尚未广泛实施。
这有帮助吗?
无论如何,做你想做的更安全的方法是:
// First attempt to get a reference to the element
var el = document.getElementById('clubname');
// If the above returned an element, and it has a labels property
// and that property has at least one member
if (el && el.labels && el.labels[0]) {
// Safe to assume el.labels[0] is a DOM element, so
// mess with its style object
el.labels[0].style.display = 'none';