Element:setAttributeNodeNS() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Element 接口的 setAttributeNodeNS() 方法将一个新的带命名空间(namespaced)的 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">one</div>
// <div id="two">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); // returns: `utterleft'

注意

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

请注意,如果您尝试在不克隆节点的情况下进行设置,可能会看到 NS_ERROR_DOM_INUSE_ATTRIBUTE_ERR “Attribute already in use”(属性已在使用中)错误,因为 DOM 要求 Attr 节点被克隆才能重用(与其他可以移动的节点不同)。

规范

规范
DOM
# dom-element-setattributenodens

浏览器兼容性

另见