Attr、attributeNN 6 IE 5 DOM 1

要素の属性の「名前/値」のペアを抽象的に表現したオブジェクトは、W3C DOM の用語では Attr オブジェクト、IE では attribute オブジェクトと呼ばれています。これらは名称は違いますが、同じオブジェクトを指しています。属性オブジェクトはどちらの環境でも、document.createAttribute() メソッドを介して作成します。この場合、属性オブジェクトへの参照は、要素の setAttributeNode() メソッドを介してその属性オブジェクトを要素に挿入する際のパラメータになります。次に例を示します。

var newAttr = document.createAttribute("author");
newAttr.value = "William Shakespeare";
document.getElementById("hamlet").setAttributeNode(newAttr);
 

getAttributeNode() メソッドを始め、W3C が勧告する DOM 要素のメソッドの中には属性オブジェクトを返すものがあり、それらは、スクリプト可能なオブジェクトと同様に、アクセスが可能なプロパティを有しています。

 

W3C DOM の抽象モデルで定義されている Attr オブジェクトは Node オブジェクトのすべてのプロパティとメソッドを継承します。Windows 版 IE は既にバージョン 5 で要素とテキストノードに対応していましたが、バージョン 6 までは、attribute オブジェクトは一部の Node オブジェクトプロパティを継承していませんでした。

 
相当する HTML コード

開始タグ内のすべての「名前/値」のペア。

 
オブジェクト参照
 
[window.]document.getElementById("elementID").attributes[i]
[window.]document.getElementById("elementID").attributes.item(i)
[window.]document.getElementById("elementID").attributes.getNamedItem[attrName]
 
オブジェクト固有のプロパティ
 
expandonameownerElementspecifiedvalue
 
オブジェクト固有のメソッド

なし

 
オブジェクト固有のイベントハンドラープロパティ

なし

expandoNN なし IE 6 DOM なし

読み取り専用

要素に挿入された属性が、その要素のネイティブ属性でない場合に、true のブール値を返します。document.createAttribute() で作成された属性については、setAttributeNode() メソッドを介して要素に属性が追加されるまでの間、このプロパティの値は false となります。その際、プロパティの値は要素のネイティブ属性のコンテキスト内で再評価が行われます。

 
 
var isCustomAttr =
  document.getElementById("book3928").getAttributeNode("author").expando;
 

true または false のブール値

 
既定値

false

nameNN 6 IE 5 DOM 1

読み取り専用

属性の「名前/値」のペアの「名前」の部分です。Attr ノードの nodeName プロパティと同じです。属性の名前をスクリプトで変更することはできません。依存関係によりドキュメントツリーに混乱が生じる可能性があるためです。名前を変更する場合は、新たに属性を作成して以前の属性と置き換えます。この属性の名前は document.createAttribute() メソッドの必{パラメータになります。

 
 
if (myAttr.name == "author") {
    // process author attribute
}
 

文字列

 
既定値

空の文字列。ただし、新たに属性を作成する場合には名前が必要です。

ownerElementNN 6 IE なし DOM 2

読み取り専用

現在の属性オブジェクトを含む要素への参照を返します。新たに作成した属性を要素に挿入するまでは、このプロパティは null となります。

 
 
if (myAttr.ownerElement.tagName == "fred") {
    // process attribute of <fred> element
}
 

要素ノードへの参照

 
既定値

null

specifiedNN 6 IE 5 DOM 1

読み取り専用

属性の値がソースコードで明示的に設定されている場合またはスクリプトで調整されている場合に、true のブール値を返します。明示的に設定されていない属性がブラウザに反映されている場合 (IE がこれに該当) には、この属性がドキュメントの DTD で定義されている既定値をとり得る場合であっても、値の specified プロパティは false となります。W3C DOM Level 2 では、新たに作成する Attr オブジェクトの specified プロパティは true でなければならないと定義していますが、IE 6 および Netscape 6.2 以降のブラウザはいずれも、属性を要素に挿入するまで、このプロパティは false のままとなります。

 
 
if (myAttr.specified) {
    // process attribute whose value is something other than DTD default
}
 

true または false のブール値

 
既定値

false

valueNN 6 IE 6 DOM 1

読み書き

属性の「名前/値」のペアの「値」の部分を示します。Attr ノードの nodeValue プロパティと同じです。また、要素の getAttribute() メソッドや setAttribute() メソッドを介して、より直接的にアクセスが可能です。新たに属性オブジェクトを作成する場合には、属性を要素に挿入する前に、value プロパティで値を設定することができます。IE の場合も含め、属性ノードの値は常に文字列です。一方、対応するプロパティでは、数値またはブール値のデータタイプが使用できます。

 
 
document.getElementById("hamlet").getAttributeNode("author").value = "Shakespeare";
 

文字列

 
既定値

空の文字列。ただし、Windows 版 IE は文字列 undefined (つまり undefined 値にならないタイプの値) を返します。