Signatur
Beschreibung
Die Eigenschaft Attr.value enthält den aktuellen Wert eines Attributknotens, immer als string. Sie ist lesbar und schreibbar: Weist man ihr einen neuen Wert zu, wird das zugehörige Attribut am Besitzer-Element (Attr.ownerElement) sofort aktualisiert. Das löst auch MutationObserver-Einträge vom Typ attributes aus.
An Attr-Objekte kommt man typischerweise über element.attributes (eine NamedNodeMap), element.getAttributeNode() oder document.createAttribute(). Besonders nützlich ist value, wenn man alle Attribute eines Elements durchläuft, etwa zum Serialisieren, Kopieren oder Prüfen von Elementen.
Im Alltag ist element.getAttribute(name) bzw. element.setAttribute(name, wert) meist kürzer. Attr.value liefert dasselbe Ergebnis, arbeitet aber direkt auf dem Attributknoten. Wichtig: value spiegelt immer den Attributwert im Markup wider, nicht den aktuellen Zustand der DOM-Eigenschaft. So bleibt z. B. das value-Attribut eines <input> unverändert, wenn der Benutzer etwas eintippt.
Rückgabewert
disabled) liefert "". Beim Setzen wird jeder Wert in einen string umgewandelt.Beispiele
Alle Attribute eines Elements auslesen
const link = document.createElement('a');
link.setAttribute('href', '/kontakt');
link.setAttribute('target', '_blank');
link.setAttribute('data-track', 'nav');
for (const attr of link.attributes) {
console.log(`${attr.name} = ${attr.value}`);
}
Wert über den Attributknoten ändern
const img = document.createElement('img');
img.setAttribute('alt', 'Logo');
const altAttr = img.getAttributeNode('alt');
altAttr.value = 'Firmenlogo programmierung.net';
// Die Änderung ist sofort am Element sichtbar
console.log(img.getAttribute('alt'));
console.log(img.outerHTML);
Attribut mit createAttribute erzeugen und anhängen
const div = document.createElement('div');
const role = document.createAttribute('role');
role.value = 'alert';
div.setAttributeNode(role);
// Nicht-String-Werte werden umgewandelt
const tab = document.createAttribute('tabindex');
tab.value = 0;
div.setAttributeNode(tab);
console.log(div.outerHTML, typeof tab.value);
Attribut und DOM-Eigenschaft unterscheiden
const input = document.createElement('input');
input.setAttribute('value', 'Start');
// Simuliert eine Benutzereingabe
input.value = 'Geändert';
const attr = input.getAttributeNode('value');
console.log(attr.value); // Attribut bleibt unverändert
console.log(input.value); // aktueller Feldinhalt
// Wichtig · Fallstricke
- Attribut oder Eigenschaft:
Attr.valueliefert den Wert des HTML-Attributs, nicht den aktuellen Zustand von Formularfeldern. Für den aktuellen Inhalt eines Eingabefelds verwendet manHTMLInputElement.value, für Checkboxenchecked. - Boolesche Attribute: Bei
disabled,hiddenusw. zählt nur, ob das Attribut vorhanden ist.attr.value = \"false\"lässt das Element trotzdem deaktiviert. Zum Entfernen dientremoveAttribute(). - Sicherheit: Werte in Attributen wie
href,srcoder Event-Handler-Attributen (onclick) nie ungeprüft aus Benutzereingaben setzen.javascript:-URLs oder Handler-Code können zu XSS führen. Wo Trusted Types erzwungen werden, gelten diese Regeln auch fürAttr.value. Node.nodeValueundNode.textContentgeben beiAttr-Knoten denselben Wert zurück wievalue.valueist jedoch die klarste Schreibweise.- Kompatibilität: Wird von allen modernen Browsern unterstützt. In alten DOM-Versionen war
AttrvonNodeabgeleitet und hatte Kindknoten. Das ist heute nicht mehr so.