Signatur
Beschreibung
animVal ist die schreibgeschützte Hälfte eines SVGAnimatedString-Objekts. Solche Objekte liefert das SVG-DOM überall dort, wo ein String-Attribut animierbar sein kann, z. B. SVGElement.className, SVGUseElement.href, SVGAElement.href/target, SVGImageElement.href oder die Filter-Attribute in1, in2 und result.
Das Gegenstück ist baseVal: Es enthält den im Markup bzw. per Skript gesetzten Grundwert und lässt sich beschreiben. animVal soll dagegen den Wert wiedergeben, der gerade gilt, also auch während eine SMIL-Animation (<animate>, <set>) das Attribut verändert.
Nutze animVal nur zum Lesen, etwa zur Fehlersuche bei Animationen oder um den aktuell gültigen Wert zu prüfen. Wenn du Werte ändern willst, schreibe immer in baseVal oder rufe setAttribute() auf.
Rückgabewert
"".Beispiele
Klassenname eines SVG-Elements auslesen
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
circle.setAttribute('class', 'marker aktiv');
svg.append(circle);
// className ist bei SVG ein SVGAnimatedString, kein String!
console.log(typeof circle.className); // Objekt
console.log(circle.className.baseVal); // Grundwert
console.log(circle.className.animVal); // aktueller Wert
href eines <use>-Elements prüfen
document.body.insertAdjacentHTML('beforeend', `
<svg width="100" height="100">
<defs><circle id="punkt" cx="50" cy="50" r="20"/></defs>
<use id="ref" href="#punkt"/>
</svg>`);
const use = document.getElementById('ref');
console.log(use.href.animVal);
// Den Wert änderst du über baseVal, nicht über animVal
use.href.baseVal = '#anderes';
console.log(use.href.animVal);
Schreibversuch im Strict Mode
'use strict';
const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
rect.setAttribute('class', 'box');
try {
rect.className.animVal = 'neu'; // Getter ohne Setter
} catch (err) {
console.log(err.name);
}
console.log(rect.className.animVal);
// Wichtig · Fallstricke
- Schreibgeschützt: Im nicht-strikten Code wird eine Zuweisung an
animValstillschweigend ignoriert. Im Strict Mode, also auch in ES-Modulen und Klassen, wirft sie einenTypeError. - Browser verhalten sich unterschiedlich: Laut SVG 2 liefert
animValbeiSVGAnimatedStringdenselben Wert wiebaseVal. Ältere Implementierungen geben während einer SMIL-Animation dagegen den animierten Wert zurück. Verlasse dich deshalb nicht darauf, dass sichanimValwährend einer Animation ändert. - Häufiger Fehler: Bei SVG-Elementen ist
element.classNamekein String. Code wieel.className.includes('x')schlägt fehl. Nimm besserel.classListoderel.getAttribute('class'). - Das veraltete
xlink:hrefwird über dieselbehref-Eigenschaft gespiegelt. Hat ein Element beide Attribute, gilthref.