Signatur
Beschreibung
Die Eigenschaft SVGNumberList.length liefert die Anzahl der SVGNumber-Objekte, die aktuell in der Liste enthalten sind. Sie ist ein Alias für SVGNumberList.numberOfItems und wurde mit SVG 2 ergänzt, damit sich SVG-Listen ähnlich wie Arrays verwenden lassen.
Eine SVGNumberList begegnet einem vor allem bei Attributen, die Zahlenlisten enthalten, zum Beispiel rotate an <text> und <tspan> (über element.rotate.baseVal) oder tableValues an Filter-Transferfunktionen wie <feFuncR>. Mit length lässt sich prüfen, wie viele Werte gesetzt sind, oder die Liste per for-Schleife zusammen mit getItem(index) durchlaufen.
Der Wert ist live: Ändern sich die Einträge über appendItem(), removeItem(), clear() oder über das zugrunde liegende Attribut, ändert sich length sofort mit. Die Eigenschaft selbst kann nicht beschrieben werden – ein Kürzen wie bei Array.prototype.length ist nicht möglich.
Beispiele
Anzahl der Rotationswerte eines Textes ermitteln
// <svg><text id="label" x="10" y="30" rotate="0 15 30 45">Hallo</text></svg>
const text = document.getElementById('label');
const rotations = text.rotate.baseVal; // SVGNumberList
console.log(rotations.length);
console.log(rotations.length === rotations.numberOfItems);
Liste durchlaufen und Werte auslesen
const text = document.querySelector('text[rotate]');
const list = text.rotate.baseVal;
const values = [];
for (let i = 0; i < list.length; i++) {
values.push(list.getItem(i).value);
}
console.log(values);
length ist live – Einträge hinzufügen und entfernen
const svg = document.querySelector('svg');
const text = document.querySelector('#label');
const list = text.rotate.baseVal;
const num = svg.createSVGNumber();
num.value = 90;
list.appendItem(num);
console.log(list.length); // ein Eintrag mehr
list.clear();
console.log(list.length);
console.log(text.getAttribute('rotate'));
Werte einer Filter-Transferfunktion prüfen
// <feFuncR id="fr" type="table" tableValues="0 0.5 1"/>
const funcR = document.getElementById('fr');
const table = funcR.tableValues.baseVal;
if (table.length < 2) {
console.warn('tableValues braucht mindestens zwei Werte');
} else {
console.log(`${table.length} Stützwerte definiert`);
}
// Wichtig · Fallstricke
- Nur lesbar: Wenn man
list.length = 0zuweist, wird die Liste nicht geleert (im Strict Mode gibt es einenTypeError). Zum Leeren dientclear(). - baseVal vs. animVal:
animValist schreibgeschützt und kann während einer SMIL-Animation eine andere Länge haben alsbaseVal. - Keine echte Array-Schnittstelle:
SVGNumberListhat zwarlengthund in modernen Browsern Indexzugriff (list[0]), aber keinmapoderforEach. Wer Array-Methoden braucht, nutztArray.from(list); das setzt allerdings Iterator-Unterstützung voraus. Am sichersten istgetItem(i). - Kompatibilität:
lengthkam erst mit SVG 2. Sehr alte Browser (z. B. der Internet Explorer) kennen nurnumberOfItems. Als Rückfallebene eignet sichlist.length ?? list.numberOfItems.