Element:setAttributeNodeNS() 方法

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Element 接口的 setAttributeNodeNS() 方法为元素添加一个新的限定命名空间的 Attr 节点。

如果你并不想在添加时使用属性节点(例如从另一个元素克隆),你可以改用 setAttributeNS() 方法。

如果你正在处理 HTML 文档,并且你不需要指定要添加的属性属于特定的命名空间,那么使用 setAttribute() 方法即可。

语法

js
setAttributeNodeNS(attributeNode)

参数

  • attributeNode:一个属性(Attr)节点。

返回值

如果存在被替换的属性节点,则该函数返回该节点。

示例

js
// <div id="one" xmlns:myNS="http://www.mozilla.org/ns/specialspace"
//            myNS:special-align="utterleft">一</div>
// <div id="two">二</div>

const myns = "http://www.mozilla.org/ns/specialspace";
const d1 = document.getElementById("one");
const d2 = document.getElementById("two");
const a = d1.getAttributeNodeNS(myns, "special-align");
d2.setAttributeNodeNS(a.cloneNode(true));
alert(d2.attributes[1].value); // 返回:“utterleft”

备注

如果元素中已存在指定的属性,则该属性将被替换为新的属性,并返回被替换的属性。

注意:如果你尝试设置的时候没有克隆该节点,你可能会遇到 NS_ERROR_DOM_INUSE_ATTRIBUTE_ERR:“Attribute already in use”错误,因为 DOM 要求 Attr 在克隆后才能被重复使用(不像其他节点一样可以被移动)。

规范

Specification
DOM Standard
# dom-element-setattributenodens

浏览器兼容性

BCD tables only load in the browser

参见