1

这对我不起作用,并且不起作用是指它不会在标签上显示任何内容....

document.getElementById('clubname').label.style.display = 'none';

我究竟做错了什么?

4

2 回答 2

1

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.

于 2012-11-07T02:00:52.140 回答
1

破译你所拥有的:

document.getElementById('clubname')

将尝试返回 id 为“clubname”的元素。如果不存在这样的元素,它将返回null

.label

将尝试访问label上面返回的对象的属性。如果是null,将引发错误。

.style

将尝试访问style上面返回的任何内容的属性。如果该值不是对象(或不可转换为对象)nullundefined则它会引发错误。

.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';
于 2012-11-07T02:07:11.670 回答