Signatur
Beschreibung
Die Eigenschaft numberOfItems der Schnittstelle SVGLengthList gibt an, wie viele SVGLength-Objekte die Liste aktuell enthält. Solche Listen begegnen einem vor allem bei Attributen, die mehrere Längenwerte aufnehmen können – etwa x, y, dx und dy von <text>- und <tspan>-Elementen.
Man verwendet numberOfItems typischerweise als Schleifengrenze beim Durchlaufen der Liste mit getItem(index) oder um vor einem Zugriff zu prüfen, ob überhaupt Werte gesetzt sind. Die Eigenschaft ist identisch mit SVGLengthList.length; length wurde später ergänzt, damit sich SVG-Listen eher wie Arrays verhalten.
Der Wert ist live: Ändert man die Liste über appendItem(), removeItem(), clear() oder durch Setzen des zugehörigen Attributs, spiegelt numberOfItems sofort die neue Anzahl wider.
Rückgabewert
unsigned long) mit der Anzahl der Einträge in der Liste. Die Eigenschaft ist schreibgeschützt.Beispiele
Anzahl der x-Positionen eines Textelements ermitteln
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const text = document.createElementNS('http://www.w3.org/2000/svg', 'text');
text.setAttribute('x', '10 20 30 40');
text.textContent = 'ABCD';
svg.append(text);
document.body.append(svg);
// baseVal ist die SVGLengthList des Attributs
const xList = text.x.baseVal;
console.log(xList.numberOfItems);
Liste mit getItem() durchlaufen
const text = document.querySelector('text');
const xList = text.x.baseVal;
for (let i = 0; i < xList.numberOfItems; i++) {
const len = xList.getItem(i);
console.log(`Buchstabe ${i}: x = ${len.value}`);
}
Live-Aktualisierung nach appendItem() und clear()
const svg = document.querySelector('svg');
const text = svg.querySelector('text');
const list = text.x.baseVal;
const neu = svg.createSVGLength();
neu.value = 50;
list.appendItem(neu);
console.log(list.numberOfItems); // 5
console.log(text.getAttribute('x'));
list.clear();
console.log(list.numberOfItems); // 0
// Wichtig · Fallstricke
numberOfItemsist schreibgeschützt – eine Zuweisung wird im Nicht-Strict-Modus stillschweigend ignoriert und wirft im Strict-Modus einenTypeError.- Die Liste ist kein Array: Methoden wie
map()fehlen. In modernen Browsern ist sie jedoch iterierbar und per Index (list[0]) ansprechbar; für ältere Umgebungen bleibtgetItem()mitnumberOfItemsder sichere Weg. animValist eine eigene, schreibgeschützte Liste; ihrnumberOfItemskann während einer SMIL-Animation vonbaseValabweichen.- Ist das Attribut nicht gesetzt, liefert
numberOfItems0– ein Zugriff mitgetItem(0)wirft dann einenIndexSizeError. - Wird von allen gängigen Browsern seit Langem unterstützt; das Alias
lengthist neuer, aber ebenfalls breit verfügbar.