В чем разница между вызовом setAttribute и setAttributeNS с нулевым параметром пространства имен?
Также есть проблема с использованием getAttribute(), а затем setAttributeNS?
В чем разница между вызовом setAttribute и setAttributeNS с нулевым параметром пространства имен?
Также есть проблема с использованием getAttribute(), а затем setAttributeNS?
setAttribute() является функцией DOM 1. setAttributeNS() - это функция DOM 2, которая решает проблему конфликтующих имен тегов или атрибутов путем указания пространства имен xmlns, которое должно применяться к тегу/атрибуту в первом аргументе.
Если атрибут не имеет определенного префикса пространства имен, первый аргумент должен быть нулевым. Вы можете использовать setAttribute(), но для согласованности рекомендуется придерживаться setAttributeNS(). См:
https://developer.mozilla.org/en/docs/Web/SVG/Namespaces_Crash_Course#Scripting_in_namespaced_XML
"Однако обратите внимание: пространство имен в рекомендации XML 1.1 утверждает, что имя пространства имен для атрибутов без префикса делает не имеет значения. Другими словами, хотя атрибуты принадлежат пространство имен тега, вы не используете имя пространства имен тега. Вместо этого вы должны использовать ноль в качестве имени пространства имен для неквалифицированных (без префикса) атрибуты. "
Метод setAttributeNS является XML-методом и не будет работать с элементами HTML.
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.
Вот объяснение на английском языке из документов MDN:
// 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
.