---
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>