Signatur
Beschreibung
Mit getNamedItemNS() suchen Sie in einer NamedNodeMap, meist element.attributes, nach einem Attribut. Maßgeblich sind dabei Namensraum-URI und lokaler Name. Das Präfix (etwa xlink:) spielt keine Rolle, weil es frei gewählt werden kann. Entscheidend ist nur der URI, an den das Präfix gebunden ist.
Gebraucht wird die Methode vor allem bei XML-Dokumenten, SVG, MathML oder XHTML, in denen Attribute aus verschiedenen Namensräumen vorkommen. Beispiele sind xlink:href, xml:lang oder eigene XML-Vokabulare. Für normale HTML-Attribute ohne Namensraum übergeben Sie null als ersten Parameter.
Die Methode gibt ein lebendiges Attr-Objekt zurück. Über value lesen und ändern Sie den Wert, außerdem stehen namespaceURI, prefix, localName und ownerElement bereit. Brauchen Sie nur den Wert als Zeichenkette, ist Element.getAttributeNS() meist bequemer.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $namespace Pflicht | string | null | Namensraum-URI des gesuchten Attributs, z. B. "http://www.w3.org/1999/xlink". Für Attribute ohne Namensraum null übergeben. Eine leere Zeichenkette "" wird ebenfalls wie null behandelt. |
|
| $localName Pflicht | string | Lokaler Name des Attributs ohne Präfix, z. B. "href" statt "xlink:href". |
Rückgabewert
Attr-Objekt oder null, wenn es in diesem Namensraum kein Attribut mit dem angegebenen lokalen Namen gibt.Beispiele
xlink:href eines SVG-Elements auslesen
const SVG_NS = 'http://www.w3.org/2000/svg';
const XLINK_NS = 'http://www.w3.org/1999/xlink';
const use = document.createElementNS(SVG_NS, 'use');
use.setAttributeNS(XLINK_NS, 'xlink:href', '#icon-star');
const attr = use.attributes.getNamedItemNS(XLINK_NS, 'href');
console.log(attr.name, attr.localName, attr.value);
console.log(attr.namespaceURI);
Attribute in einem geparsten XML-Dokument suchen
const xml = `<buch xmlns:meta="urn:beispiel:meta" meta:isbn="978-3-16-148410-0" titel="JS lernen"/>`;
const doc = new DOMParser().parseFromString(xml, 'application/xml');
const attrs = doc.documentElement.attributes;
// Attribut mit Namensraum
console.log(attrs.getNamedItemNS('urn:beispiel:meta', 'isbn')?.value);
// Attribut ohne Namensraum: null übergeben
console.log(attrs.getNamedItemNS(null, 'titel')?.value);
// Falscher Namensraum ergibt null
console.log(attrs.getNamedItemNS('urn:anderer', 'isbn'));
Attributwert über das lebendige Attr-Objekt ändern
const XML_NS = 'http://www.w3.org/XML/1998/namespace';
const doc = new DOMParser().parseFromString('<text xml:lang="en">Hallo</text>', 'application/xml');
const el = doc.documentElement;
const lang = el.attributes.getNamedItemNS(XML_NS, 'lang');
if (lang) {
lang.value = 'de'; // Änderung wirkt direkt auf das Element
}
console.log(el.getAttributeNS(XML_NS, 'lang'));
// Wichtig · Fallstricke
- Präfix hat keine Bedeutung:
getNamedItemNS(XLINK_NS, 'xlink:href')gibtnullzurück. Als zweiten Parameter immer nur den lokalen Namen übergeben. - Groß- und Kleinschreibung: Anders als bei
getNamedItem()wird der Name bei HTML-Elementen nicht in Kleinbuchstaben umgewandelt.localNamemuss genau übereinstimmen. - HTML-Attribute, die im Parser entstehen (z. B.
class,id), haben keinen Namensraum. Sie finden Sie mitnullals erstem Parameter, nicht mit dem XHTML-Namensraum. - Das zurückgegebene
Attrist lebendig: Änderungen anvaluewirken sofort auf das Element. - Kompatibilität: Die Methode wird seit DOM Level 2 in allen gängigen Browsern und in DOM-Implementierungen wie jsdom unterstützt.