Start · Sprachen · JavaScript · Referenz · NamedNodeMap.getNamedItemNS()

NamedNodeMap.getNamedItemNS()

Methode

Gibt das <code>Attr</code>-Objekt mit dem angegebenen lokalen Namen im angegebenen Namensraum zurück, oder <code>null</code>, wenn kein passendes Attribut existiert.

seit JavaScript Baseline: alle Browser (DOM Level 2) Kategorie: webapi

Signatur

NamedNodeMap.prototype.getNamedItemNS(namespace, localName)

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

Typ
Attr | null
Beschreibung
Das passende 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);
xlink:href href #icon-star http://www.w3.org/1999/xlink

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'));
978-3-16-148410-0 JS lernen null

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'));
de

// Wichtig · Fallstricke

  • Präfix hat keine Bedeutung: getNamedItemNS(XLINK_NS, 'xlink:href') gibt null zurü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. localName muss genau übereinstimmen.
  • HTML-Attribute, die im Parser entstehen (z. B. class, id), haben keinen Namensraum. Sie finden Sie mit null als erstem Parameter, nicht mit dem XHTML-Namensraum.
  • Das zurückgegebene Attr ist lebendig: Änderungen an value wirken 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.