1

これは私にとっては機能していません。機能していないということは、ラベルに何も表示されないということです。

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

私は何が間違っているのですか?

4

2 に答える 2

1

ラベル付け可能な要素には複数のラベルを付けることができるため、要素にはlabelsプロパティではなくプロパティがありlabelます。

しかし、現在、このプロパティのブラウザサポートのレベルはわかりません。

于 2012-11-07T02:00:52.140 に答える
1

あなたが持っているものを解読するには:

document.getElementById('clubname')

ID「clubname」の要素を返そうとします。そのような要素が存在しない場合は、 を返しnullます。

.label

label上記で返されたオブジェクトのプロパティにアクセスしようとします。だった場合null、エラーがスローされます。

.style

style上記で返されたもののプロパティにアクセスしようとします。nullその値がorのようなオブジェクトではない (またはオブジェクトに変換できない) 場合undefined、エラーがスローされます。

.display = 'none';

displayは、以前に返されたオブジェクトのプロパティにアクセスするか割り当てて、値 を割り当てます'none'

HTML5 には、関連付けられたラベルの NodeList を参照するプロパティを持つ、ラベル付け可能な要素のカテゴリがあります。labelsしたがって、上記が行うことは (エラーなしで完了し、関連するラベル NodeList の 1 つのメンバーにアクセスした場合...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 に答える