Attr - 将 DOM 元素的一个属性表示为对象
Attr 接口将 DOM 元素的一个属性表示为对象。在大多数 DOM 方法中,您将直接以字符串形式检索属性(例如 Element.getAttribute())),但是某些函数(例如,Element.getAttributeNode())或迭代会返回 Attr 类型。
警告: 从 Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) 开始,许多废弃的属性和方法将警告消息输出到控制台。您应该相应地修改代码。有关完整列表,请参见废弃的属性和方法。
属性
 name 只读 
属性名称。
 namespaceURI 只读 
一个 DOMString,表示属性名称空间 URI ,如果没有名称空间,则为 null。
 localName 只读 
一个 DOMString,表示属性限定名的本地部分。
 prefix 只读 
一个 DOMString,表示属性名称空间前缀,如果未指定前缀,则为 null。
 ownerElement 只读 
包含属性的元素。
注意: DOM 级别 4 删除了此属性。假设是,由于您从
Element获得了一个Attr对象,因此您应该已经知道关联的元素。
由于在Document.evaluate返回的Attr对象等情况下并非如此,因此 DOM Living Standard 重新引入了该属性。
Gecko 从 Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) 开始输出废弃提示。在 Gecko 49.0 (Firefox 49.0 / Thunderbird 49.0 / SeaMonkey 2.46) 中删除了此提示。
 specified 只读 
此属性始终返回 true。最初,如果在源代码或脚本中显式指定了属性,则返回 true true”,如果其值来自文档的 DTD 中定义的默认值,则返回 false。
 value
属性的值。
注意: DOM 级别 3 在
Node接口上定义了namespaceURI,localName和prefix。在 DOM4 中,它们已移至Attr中。
从 Chrome 浏览器 46.0 版和 Firefox 48.0 开始已实现了此更改。
废弃的属性和方法
以下属性是废弃的。当可能的话,会提示相应的替代属性。
 attributes
现在,此属性始终返回 NULL。
 childNodes 已过时 Gecko 14
现在,此属性始终返回一个空的 NodeList。
 firstChild 已过时 Gecko 14
现在,此属性始终返回 NULL。
 isId 只读 
指示该属性是否为 “ID 属性”。 “ID 属性” 是一种属性,其值在 DOM 文档中应是唯一的。在 HTML DOM 中,“id” 是唯一的 ID 属性,但是 XML 文档可以定义其他属性。属性是否唯一通常由 DTD 或其他架构描述来确定。
 lastChild 已过时 Gecko 14
现在,此属性始终返回 NULL。
 nextSibling
现在,此属性始终返回 NULL。
 nodeName
使用 Attr.name 代替。
 nodeType
现在,此属性始终返回 2(ATTRIBUTE_NODE)。
 nodeValue
使用 Attr.value 代替。
 ownerDocument
您一开始就不应该使用它,因此您可能不在乎它会消失。
 parentNode
现在,此属性始终返回 NULL。
 previousSibling
现在,此属性始终返回 NULL。
 schemaTypeInfo  只读 
与此属性关联的类型信息。尽管在加载文档或调用 Document.normalizeDocument 之后,可以确保此属性中包含的类型信息正确,但是如果移动了节点,则此属性可能不可靠。
 specified
现在,此属性始终返回 true。
 textContent
使用 Attr.value 代替。
以下方法已经废弃了:
 appendChild() 已过时 Gecko 14
改为修改 Attr.value 的值。
 cloneNode()
您一开始就不应该使用它,因此您可能不在乎它会消失。
 createAttribute()
使用 Element.setAttribute() 代替。
 createAttributeNS()
使用 Element.setAttributeNS() 代替。
 getAttributeNode()
使用 Element.getAttribute() 代替。
 getAttributeNodeNS()
使用 Element.getAttributeNS() 代替。
 hasAttributes() 已过时 Gecko 21.0
现在,此方法始终返回 false。
 hasChildNodes()
现在,此方法始终返回 false。
 insertBefore()
改为修改 Attr.value 的值。
 isSupported()
您一开始就不应该使用它,因此您可能不在乎它会消失。
 isEqualNode()
您一开始就不应该使用它,因此您可能不在乎它会消失。
 normalize()
您一开始就不应该使用它,因此您可能不在乎它会消失。
 removeAttributeNode()
使用 Element.removeAttribute() 代替。
 removeChild() 已过时 Gecko 14
改为修改 Attr.value 的值。
 replaceChild() 已过时 Gecko 14
改为修改 Attr.value 的值。
 setAttributeNode()
使用 Element.setAttribute() 代替。
 setAttributeNodeNS()
使用 Element.setAttributeNS() 代替。
规范
| 规范 | 状态 | 备注 | 
|---|---|---|
| DOM Attr 的定义  | 
现行的标准 | 加回 ownerElement 属性 | 
| DOM4 Attr 的定义  | 
已过时 | 将 Node 的 namespaceURI,prefix 和 localName 移到此接口,并删除了 ownerElement,schemaTypeInfo 和 isId。 | 
| Document Object Model (DOM) Level 3 Core Specification Attr 的定义  | 
已过时 | 初始定义 | 
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | 
|---|---|---|---|---|---|---|
| 基础支持 | 支持1 | 12 | 1 | 支持 | 支持2 | 支持 | 
localName | 464 | ≤18 | 484 | 未知 | 支持 | 支持 | 
namespaceURI | 464 | ≤18 | 484 | 未知 | 支持 | 支持 | 
prefix | 464 | ≤18 | 484 | 未知 | 支持 | 支持 | 
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari | 
|---|---|---|---|---|---|---|---|
| 基础支持 | 支持1 | 支持1 | 未知 | 4 | 未知 | 支持2 | 支持 | 
localName | 支持 | 未知 | 未知 | 484 | 未知 | 支持 | 支持 | 
namespaceURI | 支持 | 未知 | 未知 | 484 | 未知 | 支持 | 支持 | 
prefix | 支持 | 未知 | 未知 | 484 | 未知 | 支持 | 支持 | 
1. 从 Chrome 45 开始,此属性不再继承自 Node。
2. 从 Opera 32 开始,此属性不再继承自 Node。
3. 从 Samsung Internet 5.0 开始,此属性不再继承自 Node。
4. 该 API 以前在 Node API 上可用。