Signatur
Beschreibung
Die schreibgeschützte Eigenschaft length der Schnittstelle SVGLengthList liefert die Anzahl der Längenwerte, die aktuell in der Liste stehen. Solche Listen entstehen z. B. bei den Attributen x, y, dx und dy von <text>- und <tspan>-Elementen. Dort kann jedes Zeichen eine eigene Position bekommen.
length ist ein Alias für SVGLengthList.numberOfItems und gibt denselben Wert zurück. Die Eigenschaft wurde in SVG 2 ergänzt, damit sich SVG-Listen ähnlich wie Arrays verwenden lassen. Zusammen mit dem Indexzugriff (list[i]) oder getItem(i) kannst du damit in einer klassischen for-Schleife über alle Einträge laufen.
Der Wert ist live: Nach appendItem(), insertItemBefore(), removeItem(), clear() oder initialize() und nach einer Änderung des zugrunde liegenden Attributs per setAttribute() zeigt length sofort die neue Anzahl an.
Rückgabewert
unsigned long) mit der Anzahl der Einträge in der Liste.Beispiele
Anzahl der x-Koordinaten eines Textes ermitteln
const svgNS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgNS, 'svg');
const text = document.createElementNS(svgNS, 'text');
text.setAttribute('x', '10 20 30 40');
text.textContent = 'ABCD';
svg.append(text);
document.body.append(svg);
// baseVal ist eine SVGLengthList
const xList = text.x.baseVal;
console.log(xList.length);
console.log(xList.length === xList.numberOfItems);
Über alle Einträge iterieren
const text = document.querySelector('text');
const xList = text.x.baseVal;
const werte = [];
for (let i = 0; i < xList.length; i++) {
werte.push(xList.getItem(i).value);
}
console.log(werte);
Live-Aktualisierung nach Änderungen
const svg = document.querySelector('svg');
const text = document.querySelector('text');
const xList = text.x.baseVal;
const neu = svg.createSVGLength();
neu.value = 50;
xList.appendItem(neu);
console.log(xList.length); // 5
xList.removeItem(0);
console.log(xList.length); // 4
xList.clear();
console.log(xList.length); // 0
// Wichtig · Fallstricke
- Schreibgeschützt: Anders als bei
Array.prototype.lengthkannst du die Liste nicht kürzen, indem dulengtheinen Wert zuweist. Im nicht-strikten Modus wird die Zuweisung stillschweigend ignoriert, im strikten Modus wirft sie einenTypeError. Zum Leeren gibt esclear(). - Kein echtes Array: Methoden wie
map()oderforEach()gibt es nicht. Nutze einefor-Schleife. In aktuellen Browsern geht auchArray.from(list), weil die Liste iterierbar ist. - baseVal vs. animVal:
baseValenthält die Attributwerte und kann verändert werden.animValist schreibgeschützt und kann bei SMIL-Animationen einen anderen Wert fürlengthliefern. - Kompatibilität:
lengthkam erst mit SVG 2. Sehr alte Browser (z. B. alter Internet Explorer) kennen nurnumberOfItems. Für maximale Kompatibilität istnumberOfItemsdie sichere Wahl.