setAttribute和setAttributeNS之间的区别(null,

SPl*_*ten 12 javascript attributes

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

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

Chr*_*son 8

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作为非限定(无前缀)属性的命名空间名称."

  • 这让我有些困惑。我正在使用 SVG 节点,除了“null”作为“namespace”参数之外,从来不需要任何东西。我可以在任何地方都将其替换为“setAttribute()”吗? (12认同)