* 属性の設定

[16] 
[[属性]]を設定するとは、[[属性値]]をある値に設定することです。
当該[[属性]]が既に存在すれば、その[F[属性値]]を置き換えます。
存在しなければ、新たに作成します。


* 歴史

** 指定

[17] 
[[W3C DOM]] 時代には、[[属性]]には [CODE[specified]] なものと、
そうでないものがありました。 [CODE[specified]] は[[文書実現値]]に直接記述されている
(または [CODE[setAttribute]] などの [[API]] で指定した) ことを表しており、
そうでないものは [[DTD]] などの[[既定値]]から自動的に作られたものを表していました。

[18] しかしこの仕組みは理論上のもので、ほとんどの [[Webブラウザー]]はそのような動作になっていませんでした。

[19] また [[W3C DOM]] 以外の[[仕様書]]はカジュアルに「specified」という語を使っていて、
それは [CODE[specified]] の値を問わず、[[属性]]が存在しているかいないかを意味していました。

[20] 
[CODE[specified]] は [[Web DOM Core]] で廃止され、仕様と現実の「specified」
の意味が合流することとなります。

;; [CODE[specified]] も参照。

**

[1]
古い(2年位前の) [[Gecko]] では
[CODE(DOMm)[setAttribute]] の第1引数が
[[XML 1.0]] の[[名前]]として不適切でも
(例えば [CODE(char)[-]] で始まっても)
受付けていましたが、最近の (1年位前からの)
[[Gecko]] では (なぜか) [CODE(DOM)[[[NAMESPACE_ERR]]]]
が発生します。
([[名無しさん]] [WEAK[2005-04-17 03:00:17 +00:00]])

[3]
[CITE[IE の getAttribute / setAttribute: Days on the Moon]] <http://nanto.asablo.jp/blog/2005/10/29/123294>


[4] [CITE@en[WICD Mobile 1.0]]
( ([TIME[2010-08-17 16:50:39 +09:00]] 版))
<http://www.w3.org/TR/WICDMobile/#dom-core-subset-ext>

[REFS[
- [5] [CITE@en[Introduce NamedNodeMap for attributes. Clean up algorithms around att… · whatwg/dom@8af4826]] ([TIME[2015-05-30 23:49:35 +09:00]] 版) <https://github.com/whatwg/dom/commit/8af48267390b971a2ac02c7005ba42c08264b7e1#diff-8d4d847e6257b75f4bf8030496281de4L5621>
- [2] [CITE@en[setAttribute() needs to lowercase for HTML nodes in HTML documents. F… · whatwg/dom@afe5b5e]] ([TIME[2015-05-30 23:49:50 +09:00]] 版) <https://github.com/whatwg/dom/commit/afe5b5ef133185f9273cc987273cfc9f35b41ba4>
]REFS]

[6] >>2 は >>5 で[[エンバグ]]していたようです。

[7] [CITE@en[Fix #43: make setAttribute() definition shorter through inlining · whatwg/dom@6287779]]
([TIME[2015-10-06 13:10:14 +09:00]] 版)
<https://github.com/whatwg/dom/commit/6287779592d8352dad7d421a71febbb07808cec3>

[8] [CITE@en[Add support for custom elements · whatwg/dom@7f63535]]
([TIME[2016-04-13 22:24:07 +09:00]] 版)
<https://github.com/whatwg/dom/commit/7f63535da39a1cbf7f8f68563abc6f05f760990a>

[9] [CITE@en[Add support for custom elements · whatwg/dom@7f63535]]
([TIME[2016-04-13 22:25:11 +09:00]] 版)
<https://github.com/whatwg/dom/commit/7f63535da39a1cbf7f8f68563abc6f05f760990a>

[10] [CITE@en[Add ''''''[''''''CEReactions'''''']'''''' annotations to mutating methods · whatwg/dom@3cd02d1]]
([TIME[2016-04-26 19:08:05 +09:00]] 版)
<https://github.com/whatwg/dom/commit/3cd02d139c159a31fbb400e03932652c72fc7812>

[11] [CITE@en[Make Attr inherit from Node again]]
([[annevk]]著, [TIME[2016-08-19 21:44:07 +09:00]])
<https://github.com/whatwg/dom/commit/625a0747f137454c155a7b577a9e45be1aa35a34>

[12] [CITE@en[Validating a qualified name does not match browsers in a corner case · Issue #319 · whatwg/dom]]
([TIME[2017-04-23 21:52:58 +09:00]])
<https://github.com/whatwg/dom/issues/319>

[13] [CITE@en[Use a single exception for name validation]]
([[annevk]]著, [TIME[2017-03-17 03:21:31 +09:00]])
<https://github.com/whatwg/dom/commit/61f40b0763e1c5aac94014b23fb37606e9e2caca>

[14] [CITE@en[27228 – Inconsistency in characters allowed in attribute names between setAttribute and HTML syntax specs]]
([TIME[2017-04-27 20:42:24 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27228>

[15] [CITE@en[Use a single exception for name validation]]
([[annevk]]著, [TIME[2017-03-17 03:21:31 +09:00]])
<https://github.com/whatwg/dom/commit/61f40b0763e1c5aac94014b23fb37606e9e2caca>

[21] [CITE@en[MutationObserver: observing attribute changes fires even if the value didn't change. · Issue #520 · whatwg/dom]]
([TIME[2017-10-17 17:31:02 +09:00]])
<https://github.com/whatwg/dom/issues/520>

[22] [CITE@en[Editorial: embrace that attributes are objects]]
([[annevk]], [TIME[2019-12-12 02:40:19 +09:00]], [TIME[2022-01-27T11:52:22.000Z]])
<https://github.com/whatwg/dom/commit/0038d097f5cad2a7ffdbe75c234b58960aa320f6>