Signatur
Beschreibung
Die schreibgeschützte Eigenschaft numberOfItems gibt an, wie viele Punkte (DOMPoint- bzw. SVGPoint-Objekte) eine SVGPointList enthält. Solche Listen erhältst du vor allem über die Eigenschaften points und animatedPoints von SVGPolygonElement und SVGPolylineElement.
Du brauchst sie immer dann, wenn du über die Punkte einer Form iterieren willst, zum Beispiel mit getItem(index) in einer klassischen for-Schleife, oder wenn du prüfen willst, ob eine Form überhaupt genug Punkte hat (ein Polygon braucht mindestens drei).
Die Liste ist live: Änderst du das Attribut points oder rufst du appendItem(), removeItem(), insertItemBefore() oder clear() auf, ändert sich der Wert von numberOfItems sofort mit. Neuere Browser bieten zusätzlich die gleichbedeutende Eigenschaft length.
Beispiele
Punkte eines Polygons zählen
const svgNS = 'http://www.w3.org/2000/svg';
const polygon = document.createElementNS(svgNS, 'polygon');
polygon.setAttribute('points', '0,0 100,0 100,100 0,100');
console.log(polygon.points.numberOfItems);
Über alle Punkte iterieren
const svgNS = 'http://www.w3.org/2000/svg';
const polyline = document.createElementNS(svgNS, 'polyline');
polyline.setAttribute('points', '10,20 30,40 50,10');
const { points } = polyline;
for (let i = 0; i < points.numberOfItems; i++) {
const p = points.getItem(i);
console.log(`Punkt ${i}: x=${p.x}, y=${p.y}`);
}
Live-Verhalten beim Hinzufügen und Entfernen
const svgNS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgNS, 'svg');
const polygon = document.createElementNS(svgNS, 'polygon');
polygon.setAttribute('points', '0,0 50,0');
const list = polygon.points;
console.log(list.numberOfItems); // 2
// Neuen Punkt anhängen
const pt = svg.createSVGPoint();
pt.x = 25;
pt.y = 40;
list.appendItem(pt);
console.log(list.numberOfItems); // 3
list.removeItem(0);
console.log(list.numberOfItems); // 2
// Gültig als Polygon?
console.log(list.numberOfItems >= 3 ? 'gültig' : 'zu wenige Punkte');
// Wichtig · Fallstricke
- Schreibgeschützt: Zuweisungen wie
list.numberOfItems = 0werden stillschweigend ignoriert (im Strict Mode gibt es einenTypeError). Zum Leeren verwendest duclear(). - Kein echtes Array: Eine
SVGPointListhat keinforEachund keinmap. NutzenumberOfItemsmitgetItem(). In modernen Browsern gehen auchlength, Indexzugriff (list[0]) undfor...of, in älteren nicht immer. - Syntaxfehler im Attribut: Ist
pointsfehlerhaft, werden die Punkte meist nur bis zur Fehlerstelle übernommen.numberOfItemskann dann kleiner sein als erwartet. - Performance: Wenn du die Liste in der Schleife veränderst, änderst du auch
numberOfItems. Für stabile Schleifen den Wert vorher in einer Variablen speichern oder rückwärts iterieren. - Kompatibilität:
numberOfItemswird von allen gängigen Browsern unterstützt. FürgetItem()-Rückgaben liefern neuere BrowserDOMPointstattSVGPoint.