Signatur
Beschreibung
Die Methode getItem() der Schnittstelle SVGPointList liefert den Punkt an einer bestimmten Stelle der Liste. Eine SVGPointList bekommt man meist über die Eigenschaft points von <polygon>- und <polyline>-Elementen. Sie steht für die Koordinaten aus dem Attribut points.
Der zurückgegebene Punkt ist live. Er ist also kein Duplikat, sondern ein Verweis auf den Eintrag in der Liste. Wenn du seine Eigenschaften x oder y änderst, aktualisiert der Browser sofort das Attribut points und damit die Darstellung. So lassen sich einzelne Eckpunkte gezielt verschieben, ohne den ganzen Attribut-String neu zu parsen.
Typische Anwendungen sind interaktive Editoren, bei denen man Eckpunkte mit der Maus zieht, Animationen einzelner Stützpunkte und das Auslesen von Geometrie, etwa für Berechnungen von Fläche, Umfang oder Begrenzungsrahmen. Die Anzahl der Einträge steht in numberOfItems (in neueren Browsern auch in length).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $index Pflicht | number | Nullbasierter Index des gewünschten Punkts. Muss kleiner als numberOfItems sein. Der Wert wird in eine vorzeichenlose 32-Bit-Ganzzahl umgewandelt. |
Rückgabewert
index. In älteren Spezifikationen und Browsern ist das ein SVGPoint. Es ist ein live verbundenes Objekt: Wenn du x oder y änderst, ändert sich das Element mit.Beispiele
Eckpunkte eines Polygons auslesen
const svgNS = 'http://www.w3.org/2000/svg';
const polygon = document.createElementNS(svgNS, 'polygon');
polygon.setAttribute('points', '10,10 100,10 55,90');
const list = polygon.points;
for (let i = 0; i < list.numberOfItems; i++) {
const p = list.getItem(i);
console.log(`Punkt ${i}: (${p.x}, ${p.y})`);
}
Einzelnen Eckpunkt live verschieben
const svgNS = 'http://www.w3.org/2000/svg';
const line = document.createElementNS(svgNS, 'polyline');
line.setAttribute('points', '0,0 50,50 100,0');
// Mittleren Punkt nach unten ziehen – das Attribut wird automatisch aktualisiert
const mid = line.points.getItem(1);
mid.y = 80;
console.log(line.getAttribute('points'));
Ungültigen Index abfangen
const svgNS = 'http://www.w3.org/2000/svg';
const polygon = document.createElementNS(svgNS, 'polygon');
polygon.setAttribute('points', '0,0 10,0 10,10');
const safeGetPoint = (list, index) => {
try {
return list.getItem(index);
} catch (err) {
console.warn(`${err.name}: Index ${index} existiert nicht`);
return null;
}
};
console.log(safeGetPoint(polygon.points, 5));
// Wichtig · Fallstricke
- Fehlerfall: Ist
indexgrößer oder gleichnumberOfItems, wirft die Methode eineDOMExceptionvom TypIndexSizeError. Sie gibt dann nichtundefinedzurück, anders als der Zugriff per Klammerlist[i]. - Negative Indizes: Ein Wert wie
-1wird in eine große vorzeichenlose Zahl umgewandelt und löst deshalb ebenfallsIndexSizeErroraus. Es gibt keinen Zugriff „vom Ende her“ wie beiArray.prototype.at(). - Live-Objekt: Änderungen an dem zurückgegebenen Punkt wirken direkt auf das Element. Brauchst du eine unabhängige Kopie, erzeuge sie z. B. mit
DOMPoint.fromPoint(p)oder{ x: p.x, y: p.y }. - Typ des Punkts: In aktuellen Browsern ist der Rückgabewert ein
DOMPoint. Ältere Engines liefern einSVGPointmit denselben Eigenschaftenxundy. - Kompatibilität:
getItem()wird von allen modernen Browsern unterstützt.lengthund der Zugriff per Index (points[i]) sind neuer, deshalb istgetItem()in Legacy-Umgebungen die sicherere Wahl.