--- title: Attr slug: Web/API/Attr tags: - API - DOM translation_of: Web/API/Attr --- <div>{{APIRef("DOM")}}</div> <p>この型は、DOM 要素の属性をオブジェクトとして提供します。ほとんどの DOM メソッドは、この属性を文字列として直接取得するでしょう (例: {{domxref("Element.getAttribute()")}})。しかし、特定の関数 (例: {{domxref("Element.getAttributeNode()")}}) やイテレーションを表すものには Attr 型を付与します。</p> <p>{{InheritanceDiagram}}</p> <div class="warning"><strong>警告:</strong> DOM Core 1、2、および 3 仕様において、<code>Attr</code> は {{domxref("Node")}} から継承されますが、<a class="external" href="https://www.w3.org/TR/dom/">DOM4</a> 仕様では異なります。Attr の実装を仕様に昇華する目的で、これを {{domxref("Node")}} から継承されないものに変更する作業が進められています。そのため、<code>Attr</code> オブジェクト上の {{domxref("Node")}} プロパティやメソッドを使用すべきではありません。<br> Gecko 7.0 {{geckoRelease("7.0")}} 以降、これが削除されるという警告メッセージがコンソールに出力されています。これに従って、コードを変更してください。<a href="#Deprecated_properties_and_methods">非推奨のプロパティとメソッド</a> の完全なリストも参照してください。</div> <h2 id="プロパティ">プロパティ</h2> <dl> <dt>{{domxref("Attr.name", "name")}} {{readOnlyInline}}</dt> <dd>属性の名前です。</dd> <dt>{{domxref("Attr.namespaceURI", "namespaceURI")}} {{readOnlyInline}}</dt> <dd>属性の名前空間 URI を表す {{domxref("DOMString")}} 文字列です。名前空間がない場合、<code>null</code> になります。</dd> <dt>{{domxref("Attr.localName", "localname")}} {{readOnlyInline}}</dt> <dd>属性の限定名のローカル部分を表す {{domxref("DOMString")}} 文字列です。</dd> <dt>{{domxref("Attr.prefix", "prefix")}} {{readOnlyInline}}</dt> <dd>属性の名前空間の接頭辞を表す {{domxref("DOMString")}} 文字列です。接頭辞が指定されていない場合、<code>null</code> になります。</dd> <dt>{{domxref("Attr.ownerElement", "ownerElement")}} {{readOnlyInline}}</dt> <dd> <p>属性を持った要素です。</p> <div class="note"> <p><strong>注意:</strong> DOM レベル 4 からこのプロパティは削除されました。 {{domxref("Element")}} から <code>Attr</code> オブジェクトを取得でき、関連した要素を知っているという前提からでした。<br> {{domxref("Document.evaluate")}} により返される <code>Attr</code> オブジェクトのように前提が真とはならない事例があるので、 DOM Living Standard は、プロパティを再び導入しました。</p> <p>Gecko は、Gecko 7.0 {{geckoRelease("7.0")}} から非推奨注意を出力します。非推奨注意は、Gecko 49.0 {{geckoRelease("49.0")}} で再び削除されました。</p> </div> </dd> <dt>{{domxref("Attr.specified", "specified")}} {{readOnlyInline}}</dt> <dd>このプロパティは常に <code>true</code> を返します。かつては、ソースコードやスクリプトで明示的に指定された場合に <code>true</code> を返し、ドキュメントの <acronym title="Document Type Definition">DTD</acronym> で定義されたデフォルト値である場合に <code>false</code> を返しました。</dd> <dt>{{domxref("Attr.value", "value")}}</dt> <dd>属性の値です。</dd> </dl> <div class="note"> <p><strong>注意:</strong> DOM レベル 3 は {{domxref("Node")}} インターフェース上に<code>namespaceURI</code>, <code>localName</code> および <code>prefix</code> を定義していました。DOM4 で、それらは <code>Attr</code> に移動しました。</p> <p>この変更は Chrome 46.0 以降、Firefox 48.0 以降で実装されています。</p> </div> <h2 id="非推奨のプロパティとメソッド">非推奨のプロパティとメソッド</h2> <p>以下のプロパティは非推奨とされました。利用可能な場所では、適切な代わりのプロパティが提供されます。</p> <dl> <dt><code>attributes</code></dt> <dd>このプロパティは常に <code>NULL</code> を返します。</dd> <dt><code>childNodes</code></dt> <dd>このプロパティは常に <code>NULL</code> を返します。</dd> <dt><code>firstChild</code></dt> <dd>このプロパティは常に <code>NULL</code> を返します。</dd> <dt><code>isId</code> {{readOnlyInline}}</dt> <dd>属性が "ID 属性" かどうかを示します。"ID 属性" は、DOM ドキュメント全体で唯一の値であることが期待されます。HTML DOM の内部で、"id" はこの ID 属性だけですが、XMLドキュメントでは他の属性を定義できます。ある属性が唯一であるかどうかは、{{Glossary("DTD")}} または他のスキーマ記述で見分けられます。</dd> <dt><code>lastChild</code> {{obsolete_inline(14)}}</dt> <dd>このプロパティは常に <code>NULL</code> を返します。</dd> <dt><code>nextSibling</code></dt> <dd>このプロパティは常に <code>NULL</code> を返します。</dd> <dt><code>nodeName</code></dt> <dd>代わりに {{domxref("Attr.name")}} を使用してください。</dd> <dt><code>nodeType</code></dt> <dd>このプロパティは常に 2 (<code>ATTRIBUTE_NODE</code>) を返します。</dd> <dt><code>nodeValue</code></dt> <dd>代わりに {{domxref("Attr.value")}} を使用してください。</dd> <dt><code>ownerDocument</code></dt> <dd>これを最初の場所で使用すべきではありません。このプロパティが取り除かれても影響が出ないようにコードを実装してください。</dd> <dt><code>parentNode</code></dt> <dd>このプロパティは常に <code>NULL</code> を返します。</dd> <dt><code>previousSibling</code></dt> <dd>このプロパティは常に <code>NULL</code> を返します。</dd> <dt><code>schemaTypeInfo</code> {{obsolete_inline}} {{readOnlyInline}}</dt> <dd>この属性に関連付けられた型情報です。ドキュメントが読み込まれた後または {{domxref("Document.normalizeDocument")}} が呼び出された後、この属性含まれた型情報が正しいことが保証されています。ノードが移動された場合、このプロパティは信頼できなくなるでしょう。</dd> <dt><code>specified</code></dt> <dd>このプロパティは常に <code>true</code> を返します。</dd> <dt><code>textContent</code></dt> <dd>代わりに {{domxref("Attr.value")}} を使用してください。</dd> </dl> <p>以下のメソッドは非推奨です:</p> <dl> <dt><code>appendChild()</code></dt> <dd>代わりに {{domxref("Attr.value")}} の値を変更してください。</dd> <dt><code>cloneNode()</code></dt> <dd>これを最初の場所で使用すべきではありません。このプロパティが取り除かれても影響が出ないようにコードを実装してください。</dd> <dt><code>createAttribute()</code></dt> <dd>代わりに {{domxref("Element.setAttribute()")}} を使用してください。</dd> <dt><code>createAttributeNS()</code></dt> <dd>代わりに {{domxref("Element.setAttributeNS()")}} を使用してください。</dd> <dt><code>getAttributeNode()</code></dt> <dd>代わりに {{domxref("Element.getAttribute()")}} を使用してください。</dd> <dt><code>getAttributeNodeNS()</code></dt> <dd>代わりに {{domxref("Element.getAttributeNS()")}} を使用してください。</dd> <dt><code>hasAttributes() </code>{{obsolete_inline("21.0")}}</dt> <dd>このメソッドは常に <code>false</code> を返します。</dd> <dt><code>hasChildNodes()</code></dt> <dd>このメソッドは常に <code>false</code> を返します。</dd> <dt><code>insertBefore()</code></dt> <dd>代わりに {{domxref("Attr.value")}} の値を変更してください。</dd> <dt><code>isSupported()</code></dt> <dd>これを最初の場所で使用すべきではありません。このプロパティが取り除かれても影響が出ないようにコードを実装してください。</dd> <dt><code>isEqualNode()</code></dt> <dd>これを最初の場所で使用すべきではありません。このプロパティが取り除かれても影響が出ないようにコードを実装してください。</dd> <dt><code>normalize()</code></dt> <dd>これを最初の場所で使用すべきではありません。このプロパティが取り除かれても影響が出ないようにコードを実装してください。</dd> <dt><code>removeAttributeNode()</code></dt> <dd>代わりに {{domxref("Element.removeAttribute()")}} を使用してください。</dd> <dt><code>removeChild()</code></dt> <dd>代わりに {{domxref("Attr.value")}} の値を変更してください。</dd> <dt><code>replaceChild()</code></dt> <dd>代わりに {{domxref("Attr.value")}} の値を変更してください。</dd> <dt><code>setAttributeNode()</code></dt> <dd>代わりに {{domxref("Element.setAttribute()")}} を使用してください。</dd> <dt><code>setAttributeNodeNS()</code></dt> <dd>代わりに {{domxref("Element.setAttributeNS()")}} を使用してください。</dd> </dl> <h2 id="仕様">仕様</h2> <table class="standard-table"> <thead> <tr> <th scope="col">仕様書</th> <th scope="col">状況</th> <th scope="col">コメント</th> </tr> </thead> <tbody> <tr> <td>{{SpecName("DOM WHATWG", "#interface-attr", "Attr")}}</td> <td>{{Spec2("DOM WHATWG")}}</td> <td><code>ownerElement</code> プロパティを追加。</td> </tr> <tr> <td>{{SpecName("DOM4", "#interface-attr", "Attr")}}</td> <td>{{Spec2("DOM4")}}</td> <td>{{domxref("Node")}} から <code>namespaceURI</code>、<code>prefix</code>、<code>localName</code> をこの API へ移動し、<code>ownerElement</code>、<code>schemaTypeInfo</code>、<code>isId</code> を削除。</td> </tr> <tr> <td>{{SpecName("DOM3 Core", "core.html#ID-637646024", "Attr")}}</td> <td>{{Spec2("DOM3 Core")}}</td> <td>初版</td> </tr> </tbody> </table> <h2 id="ブラウザの実装状況">ブラウザの実装状況</h2> <p>{{Compat("api.Attr")}}</p> <p>[1] Chrome 45 現在、このプロパティは Node を継承しません。</p>