Document: createAttributeNS() method
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The createAttributeNS() method of the Document interface creates a new attribute node with the specified namespace URI and qualified name.
The object created is a node implementing the Attr interface.
The DOM does not enforce what sort of attributes can be added to a particular element in this manner.
Syntax
createAttributeNS(namespaceURI, qualifiedName)
Parameters
namespaceURI-
A string that specifies the
namespaceURIto associate with the attribute, or the empty string. In HTML documents, most attributes are in the null namespace — use the empty string for these. Use a specific namespace URI only when creating a namespaced attribute, such asxml:langorxml:space. Some namespace URIs are:- XML:
http://www.w3.org/XML/1998/namespace(forxml:lang,xml:space) - XMLNS:
http://www.w3.org/2000/xmlns/(forxmlns,xmlns:*) - XLink:
http://www.w3.org/1999/xlink(forxlink:href,xlink:title, etc.)
- XML:
qualifiedName-
A string containing the qualified name of the new attribute. The
nameproperty of the created attribute is initialized with this value.The format of the qualified name is
prefix:localNameorlocalName, where the parts are defined as:prefixOptional-
A "short alias" for the namespace. The prefix is optional, but if it is specified the
namespaceURIparameter must also be specified. If the prefix is set toxmlorxmlns, thenamespaceURImust be set tohttp://www.w3.org/XML/1998/namespaceorhttp://www.w3.org/2000/xmlns/, respectively.The value is used to initialize the new attribute's
prefixproperty. Defaults tonull. localName-
The local name of the attribute. The value is used to initialize the new attribute's
localNameproperty.
Return value
The new Attr node.
Exceptions
NamespaceErrorDOMException-
Thrown if the
namespaceURIvalue is:- not a valid namespace URI.
- set to the empty string when
prefixhas a value. - not the value
http://www.w3.org/XML/1998/namespaceorhttp://www.w3.org/2000/xmlns/whenprefixis set toxmlorxmlns, respectively.
InvalidCharacterErrorDOMException-
Thrown if either the
prefixorlocalNameis not valid:- The
prefixmust have at least one character, and cannot contain ASCII whitespace,NULL,/, or>(U+0000, U+002F, or U+003E, respectively). - The
localNamemust have at least one character, and may not contain ASCII whitespace,NULL,/,=or>(U+0000, U+002F, U+003D, or U+003E, respectively).
Note: Earlier versions of the specification were more restrictive, requiring that the
localNamebe a valid XML name. - The
Examples
>Creating a namespaced attribute
This example creates an xml:lang attribute with the XML namespace and attaches it to a paragraph element.
This attribute specifies the language of the element's content for XML processing.
<p id="greeting">Bonjour!</p>
const el = document.getElementById("greeting");
const attr = document.createAttributeNS(
"http://www.w3.org/XML/1998/namespace",
"xml:lang",
);
attr.value = "fr";
el.setAttributeNode(attr);
Creating an unprefixed attribute
In HTML documents, unprefixed attributes (such as SVG presentation attributes like viewBox) are in the null namespace.
Use the empty string for the namespaceURI parameter to match this.
<svg id="svg"></svg>
const svg = document.getElementById("svg");
const attr = document.createAttributeNS("", "viewBox");
attr.value = "0 0 100 100";
svg.setAttributeNode(attr);
console.log(svg.getAttribute("viewBox")); // "0 0 100 100"
Note that, in most cases, you can use Element.setAttribute() instead of createAttributeNS() for unprefixed attributes:
svg.setAttribute("viewBox", "0 0 100 100");
Specifications
| Specification |
|---|
| DOM> # dom-document-createattributens> |