setAttribute和setAttributeNS之间的区别(null,

时间:2016-01-28 09:46:12

标签: javascript attributes

使用null作为命名空间参数调用setAttribute和setAttributeNS有什么区别?

使用getAttribute()然后使用setAttributeNS也存在问题吗?

4 个答案:

答案 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.