[30] [DFN[[CODE(HTMLa)@en[[[for]]]]]] [[属性]]は、
適用対象となる[[要素]]の[[識別子]]を指定するものです。

[FIG(switch)[
: [CODE(HTMLe)@en[[[label]]]] [[要素]] : [[フォーム制御子]]に対する[[ラベル]]を指定します。
[[識別子]]を1つだけ指定できます。
: [CODE(HTMLe)@en[[[output]]]] [[要素]] : [[出力]]の元となる[[要素]]を指定します。
[[識別子]]はいくつでも指定できます。
: [CODE(HTMLe)@en[[[script]]]] [[要素]] : [[イベント]]の[[対象]]を指定するものとして、
かつて [[IE]] が実装していました。現在は[[廃止]]されています。
]FIG]

* 仕様書

[REFS[
- [35] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-21 07:50:23 +09:00]] 版) <https://html.spec.whatwg.org/#dom-script-htmlfor>
- [37] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-21 07:50:23 +09:00]] 版) <https://html.spec.whatwg.org/#attr-script-event>
]REFS]

* label 要素 for 属性 (HTML, XHTML 1)

[1] [[HTML]] の [CODE(HTMLe)[[[label]]]] 要素の
[DFN[[CODE(HTMLa)[for]] 属性]]は、
[RUBY[名札][ラベル]]と組になる[[制御子]]を指定します。

[2] 仕様書:
- [[HTML 4]] ([[Web Forms 1.0]])
-- [CODE(HTMLe)[label]] 要素 [CODE(HTMLa)[for]] 属性
<IW:HTML4:"interact/forms.html#adef-for">
-- [CITE[17.9.1 The [CODE(HTMLe)[LABEL]] element]]
<IW:HTML4:"interact/forms.html#idx-label">
- [[Web Forms 2.0]]
-- [CSECTION@en[2.18. Handling unexpected elements and values]]
<IW:WF2:"#handling">

[[#comment]]

** 属性値

[3] この属性は [CODE(SGML)[[[IDREF]]]] です。
大文字・小文字は区別されます [SRC[HTML 4 17.9.1]] が、
それ以前に [[SGML]] 的に大文字化がなされます。
詳しくは[[噂の[CODE(SGML)[ID]]問題]]をご覧ください。

この [CODE(SGML)[ID]] は、同じ文書の[[制御子]]要素の [CODE(HTMLa)[[[id]]]]
でなければなりません。

[4] この属性は省略可能です。
省略した場合は、その要素内にある制御子に関連付けられます
[SRC[HTML 4 17.9.1]]。

[5]
定義上、 [CODE(HTMLe)[label]] は丁度1つの制御子と関連付けられなければなりませんから、
[CODE(HTMLa)[for]] 
属性を指定しない場合には要素の子孫には丁度1つ制御子要素がなければなりません。
[CODE(HTMLa)[for]] 属性を指定する場合には、
要素の子孫に制御子要素があってはならないはずです
(但し [CODE(HTMLa)[for]] 属性で指定された要素が子孫にあるという場合は、
定義に反しませんから問題ないと思われます)。

[[#comment]]

** フォーム

[21] '''誤り処理 (非フォーム制御子)'''

[[参照]]されているのが[[フォーム制御子]]でない場合、
[[利用者エージェント]]はこの[[属性]]を無視[['''しなければなりません''']]。
[CODE(DOMa)@en[[[htmlFor]]]] などではそのままの値が使われますが、
[CODE(DOMa)@en[[[control]]]] は [CODE(DOM)@en[[[null]]]]
を返す値と[['''しなければなりません''']]。
[CODE(HTMLe)@en[[[label]]]] を[[活性化]]しても、
関連付けられた[[要素]]に[[焦点]]を送信[['''してはなりません''']]。
[SRC@en[WF2 2.18]]

[22] '''空の属性値'''

[CODE(HTMLa)@en[[[for]]]] [[属性]]がない場合のように処理[['''しなければなりません''']]。
[SRC@en[WF2 2.18]]

[[#comment]]

** 関連

[6] 複数の [CODE(HTMLe)[label]] 要素が同じ [CODE(HTMLa)[for]] 
属性を持っていても (同じ制御子を参照していても) 構いません [SRC[HTML 4 17.9.1]]。

* [CODE(HTMLe)@en[output]] 要素 [CODE(HTMLa)@en[for]] 属性 (HTML)

[16]
[[HTML]] の [CODE(HTMLe)@en[[[output]]]] [[要素]]の
[DFN[[CODE(HTMLa)@en[[[for]]]] [[属性]]]]は、
[CODE(HTMLe)@en[[[output]]]] [[要素]]の値の源を指定します。

[17]
仕様書:
- [[Web Forms 2.0]]
-- [CSECTION@en[2.13. The [CODE(HTMLe)@en[[[output]]]] element]]
<IW:WF2:"#the-output">

** 属性値

[18]
[CODE(HTMLe)@en[[[output]]]] [[要素]]の[[値]]を制御する[[要素]]の[[識別子]]の[[間隔]]区切りの[[並び]]です。
[SRC@en[WF2 2.13]]

[[#comment]]

** レンダリング

[19]
[[利用者エージェント]]は、この[[属性]]を、
[[値]]を変えたければ[[利用者]]がいじるべき部分を[[利用者]]に示すために使用[['''して構いません''']]。
[SRC@en[WF2 2.13]]

[[#comment]]

** 例

[20] [SRC@en[WF2 2.13]]
[PRE(HTML example code)[
...
<p>Your fax number is <output for="fax"><em>+1</em> 650 555 1234</output>.</p>
...
<p id="fax">To change your fax number, you must send us a fax
from your new number with a signed request that your fax number
details be changed. We will then call you to confirm the
change.</p>
]PRE]

この例では、 [CODE(HTMLe)@en[[[output]]]]
[[要素]]内に [[FAX番号]]が示されており、
[CODE(HTMLa)@en[[[for]]]] [[属性]]はその 
[[FAX番号]]を変更するための方法が書かれた[[段落]]を指しています。

;; なお、 [CODE(HTMLe)@en[[[em]]]] [[要素]]により[[国番号]]が[[強調]]されています。

* 歴史

[36] [[IDL属性]]は、当時の [[W3C DOM]] の方針で主要な[[プログラミング言語]]の[[予約語]]との衝突を避けるようにしていたため、
[[内容属性]]とは異なる [CODE(DOMa)@en[htmlFor]] という名前にしたと思われます。
([[IE4 DOM]] 時代に既にあったのかどうかは不明。)

** [CODE(HTMLe)[script]] 要素 [CODE(HTMLa)[for]] 属性 (HTML)

[7] [[HTML]] の [CODE(HTMLe)[[[script]]]] 要素の
[DFN[[CODE(HTMLa)[[[for]]]] 属性]]は、[[スクリプト]]が適用される[[事象]]の対象要素を指定します。

*** 代替

[9] この属性は'''予約'''機能でしたが [SRC[HTML 4 DTD]]、
その後も正式な HTML の機能として取り入れられることはありませんでした。
代わりに [[XML事象]]で同じ機能が標準化されています。

*** 属性値

[10] この属性の値は [CODE(SGML)[%[[URI]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。 [SRC[HTML 4 DTD]]

[26] 実際には [[WinIE]] では [CODE(SGML)@en[[[IDREF]]]] として実装されており、[[HTML4]]
は間違っています。

[11] この属性は省略可能です。 [SRC[HTML 4]]

[27] [CODE(HTMLa)@en[[[event]]]] [[属性]]が指定されているときは実質的に [CODE(HTMLa)@en[[[for]]]]
も必須になるのだと思いますが、省略されていたらどうなるのでしょうかね。

*** 処理

[32] [[スクリプトの準備]]を参照。

*** [CODE(DOMi)@en[HTMLScriptElement]] インターフェイス [CODE(DOMa)@en[htmlFor]] 属性

[33] [CODE(DOMi)@en[[[HTMLScriptElement]]]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[[[htmlFor]]]]]] [[IDL属性]]は、
[CODE(HTMLa)@en[[[for]]]] [[内容属性]]を[[文字列]]として[[反映]]しなければ[['''なりません''']]
[SRC[>>35]]。

[34] この[[IDL属性]]は[[廃止]]状態にあります [SRC[>>35]]。
しかし[[利用者エージェント]]は互換性のために実装しなければなりません。

*** 関連

[13] [CODE(HTMLa)[[[for]]]] 属性は常に
[CODE(HTMLa)[[[event]]]] 属性と組で使います。

[15] この属性に対応する [CODE(DOMa)[[[htmlFor]]]]
属性が [[DOM水準1]] HTML および [[DOM水準2]] HTML
で予約機能として [CODE(DOMi)[[[HTMLScriptElement]]]]
界面に定義されています。

*** 歴史

**** IE

[14] この属性ははじめ [[WinIE]] が実装しました。

**** HTML4

[8] 仕様書:
-[[HTML 4]]
-- [[厳密DTD]]
<IW:HTML4:"sgml/dtd.html">
-- [[移行用DTD]]
<IW:HTML4:"sgml/loosedtd.html">

[12] HTML 4 DTD は ([[厳密DTD]] も[[移行用DTD]] も)
[CODE(SGML)[%[[HTML.Reserved]]]] が [CODE(SGML)[[[IGNORE]]]]
であってもこの属性を宣言しています。

HTML 4 仕様書のマーク付けされた DTD は
[CODE(HTMLa)[for]] 属性を [CODE(HTMLe)[[[label]]]] 要素の
[CODE(HTMLa)[for]] 属性にリンクしています。
しかし、属性型も意味も異なりますし、単なる間違いと思われます。

**** HTML5

[38] [[HTML5]] で正式に[[廃止]]されました [SRC[>>37]]。

[23] [CITE@en[(X)HTML5 Tracking]]
[CITE[Make <script for> block script execution.]]
([TIME[2009-10-20 21:59:42 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4202&to=4203>

[24] [CITE[Bug 7851 – Some (perhaps all) scripts with a for="" attribute should be ignored]]
([TIME[2009-10-20 22:00:06 +09:00]] 版)
<http://www.w3.org/Bugs/Public/show_bug.cgi?id=7851>

[25] [CITE[IRC logs: freenode / #whatwg / 20091009]]
([TIME[2009-12-08 00:45:57 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20091009#l-210>

[29] [CITE@en[Fixes #253: Make script element IDL attributes reflect content attrib… · whatwg/html@6c635b1]]
([TIME[2015-11-11 23:58:47 +09:00]] 版)
<https://github.com/whatwg/html/commit/6c635b1ca71ab6b12d1e3ad2438457778554eabd>

* メモ

[28] [CITE@en[HTML Speech Incubator Group Final Report]]
( ([TIME[2011-12-05 17:46:22 +09:00]] 版))
<http://www.w3.org/2005/Incubator/htmlspeech/XGR-htmlspeech-20111206/#dfn-htmlFor>

[31] [CITE@en[Adding ''''''[''''''SameObject'''''']'''''' to DOMTokenLists · whatwg/html@ec1dc4d]]
([TIME[2016-02-18 11:11:16 +09:00]] 版)
<https://github.com/whatwg/html/commit/ec1dc4d4571c61cf0c0dfe3e562898635886b412>

[39] [CITE@en[Make forms work in shadow trees]]
( ([[annevk]]著, [TIME[2016-05-12 00:45:25 +09:00]]))
<https://github.com/whatwg/html/commit/927fda0f305452a9c54a25d3ebf9a6ed5ae29fd3>

[40] [CITE@en[Remove <keygen>]]
([[domenic]]著, [TIME[2017-01-14 07:03:02 +09:00]])
<https://github.com/whatwg/html/commit/5baa38720f6e83c94a50018c4565808ad548d69c>

[41] [CITE@en[Tweak '''['''CEReactions''']''' definition and usage]]
([[domenic]]著, [TIME[2017-02-22 06:11:13 +09:00]])
<https://github.com/whatwg/html/commit/c422734d44ae9897c1700daf08bd415e0dc5f9e1>