使用null作为命名空间参数调用setAttribute和setAttributeNS有什么区别?
使用getAttribute()然后使用setAttributeNS也存在问题吗?
答案 0 :(得分:6)
setAttribute()是DOM 1函数。 setAttributeNS()是一个DOM 2函数,它通过指定应该应用于第一个参数中的标记/属性的xmlns命名空间来解决标记或属性名称冲突的问题。
如果属性没有已定义的名称空间前缀,则第一个参数必须为 null 。您可以使用 setAttribute(),但为了保持一致性,建议您坚持 setAttributeNS()。参见:
https://developer.mozilla.org/en/docs/Web/SVG/Namespaces_Crash_Course#Scripting_in_namespaced_XML
"但是,请注意:XML 1.1中的命名空间建议 声明没有前缀的属性的命名空间名称 没有价值。换句话说,虽然属性属于 标记的命名空间,您不使用标记的命名空间名称。 相反,您必须使用null作为不合格的命名空间名称 (无前缀)属性。"
答案 1 :(得分:0)
setAttributeNS方法是一种XML方法,不适用于HTML元素。
答案 2 :(得分:0)
这是MDN docs的英文解释:
// Given:
// <div id="div1" xmlns:special="http://www.mozilla.org/ns/specialspace"
// special:specialAlign="utterleft" width="200px" />
d = document.getElementById("div1");
d.removeAttributeNS("http://www.mozilla.org/ns/specialspace", "specialAlign");
// Now:
// <div id="div1" width="200px" />
因此,看来xmlns:special="http://www.mozilla.org/ns/specialspace"
是命名空间special
的声明,然后将其用于上下文化special:specialAlign
。
答案 3 :(得分:-1)
setAttributeNS
用于指定命名空间,并添加带命名空间的新属性。 NS
代表了这一点。它还需要三个参数
element.setAttributeNS(ns,name,value)
ns :namespace URI of the attribute to set
name:Name of the attribute to set
value:Value of the attribute to set
setAttribute(name,value) which is use to add a new attribute or change the value of existing attribute.