Attr

该类型使用对象来表示一个DOM元素的属性。在大多数DOM方法中,你可能会直接通过字符串的方式获取属性值(例如Element.getAttribute()),但是一些函数(例如Element.getAttributeNode())或通过迭代器访问时则返回Attr类型。

EventTarget Node Attr

警告:从Gecko 7.0开始(Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4),控制台会输出这些方法和属性将会被移除的警告信息。你应该对代码进行相应的修正。点击Deprecated properties and methods查看完整的列表。
DOM4[REC]中,为了规范化Attr的实现,它不再继承自Node。在目前DOM4.1[WD]中又有变动,因此不建议使用Attr对象上有关Node的属性和方法。

属性

name (en-US) 只读
该属性的名称
namespaceURI 只读

表示该属性的命名空间URIDOMString,如果该元素不在命名空间中,则返回null。

localName 只读

表示该属性的命名空间限定的本地名称DOMString

prefix 只读
表示该属性的命名空间前缀DOMString,如果没有前缀指定则返回null。
ownerElement (en-US) 只读

该属性所附属的元素节点。

注意: DOM Level 4移除了这个方法。由于当你从Element中获得Attr对象时,你应已知相关的元素。
在某些场景下并一定能够得到相关的元素,比如通过Document.evaluate返回的Attr对象,最新的DOM草案再次引入该属性。

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 (en-US) 只读
该属性将返回。如果这个属性你在源代码或者在脚本中明确指定的话,它总是返回真。否则它是由文档的DTD默认定义的,将总是返回
value (en-US)
属性的值

注意: DOM Level 3定义namespaceURI, localNameprefixNode接口。在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属性,也是唯一一个ID属性;但是在XML文档中可以定义其他ID属性。一个属性是否是唯一的,通常由DTD (en-US)或其他文档模式描述文件决定。
lastChild
当前该属性总是返回NULL
nextSibling
当前该属性总是返回NULL
nodeName
使用Attr.name (en-US)来代替
nodeType
当前该属性总是返回2,表示ATTRIBUTE_NODE
nodeValue
使用Attr.value (en-US)来代替
ownerDocument
这个属性本不应当在这里被使用,所以应该无须担心其演变
parentNode
当前该属性总是返回NULL
previousSibling
当前该属性总是返回NULL
schemaTypeInfo This is an obsolete API and is no longer guaranteed to work. 只读
当前属性的类型信息。然而当加载完文档完或调用Document.normalizeDocument后,这个被认定为绝对正确的包含在节点内的类型信息,会因为节点的移动而变得不可信。
specified
当前该属性总是返回true
textContent
使用Attr.value (en-US)来代替

这些方法已经被废弃:

appendChild()已废弃 Gecko 14
通过编辑Attr.value (en-US)属性来实现相同的效果
cloneNode()
这个方法本不应当在这里被使用,所以无须担心其演变
createAttribute()
使用Element.setAttribute()来代替
createAttributeNS()
使用Element.setAttributeNS()来代替
getAttributeNode()
使用Element.getAttribute()来代替
getAttributeNodeNS()
使用Element.getAttributeNS() (en-US)来代替
hasAttributes() 已废弃 Gecko 21.0
当前该方法总是返回false.
hasChildNodes()
当前该方法总是返回false.
insertBefore()
通过编辑Attr.value (en-US)来实现相同效果
isSupported()
这个方法本不应当被在这里使用,所以无须担心其演变
isEqualNode()
这个方法本不应当被在这里使用,所以无须担心其演变
normalize()
这个方法本不应当被在这里使用,所以无须担心其演变
removeAttributeNode()
使用Element.removeAttribute()来代替
removeChild()已废弃 Gecko 14
通过编辑Attr.value (en-US)来实现相同效果
replaceChild()已废弃 Gecko 14
通过编辑Attr.value (en-US)来实现相同效果
setAttributeNode()
使用Element.setAttribute()来代替
setAttributeNodeNS()
使用Element.setAttributeNS()来代替

规格

规格 状态 注释
DOM
Attr
Living Standard 加回 ownerElement 属性
DOM4
Attr
Obsolete namespaceURI、prefixlocalName从 Node 移至本API,且删除 ownerElement、schemaTypeInfoisId.
Document Object Model (DOM) Level 3 Core Specification
Attr
Obsolete

扩展 schemaTypeInfo, isId

Document Object Model (DOM) Level 1 Core Specification
Attr
Obsolete 初始定义

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
基本支持 (Yes)[1] (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
基本支持 (Yes) (Yes)[1] (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)[1]

[1] As of Chrome 45, this property no longer inherits from Node.

参考