Signatur
Beschreibung
valueAsString ist die Textform eines SVGAngle-Objekts. Beim Lesen erhalten Sie Zahl und Einheit so, wie es unitType vorgibt, etwa "45deg". Ist keine Einheit angegeben (SVG_ANGLETYPE_UNSPECIFIED), kommt nur die Zahl zurück, z. B. "30".
Beim Schreiben wird die Zeichenkette ausgewertet. Danach enthalten value, valueInSpecifiedUnits und unitType die neuen Werte. Erlaubt sind die Einheiten deg, rad, grad oder gar keine Einheit (wird als Grad behandelt).
Ein SVGAngle erhalten Sie auf zwei Wegen:
- als freies Objekt über
SVGSVGElement.createSVGAngle() - über animierbare Attribute wie
SVGMarkerElement.orientAngle.baseVal
Im zweiten Fall ändert ein Zuweisen an valueAsString direkt das zugehörige Attribut im DOM, hier orient. So können Sie Winkel samt Einheit bequem von Formularfeldern oder Konfigurationsdaten übernehmen, ohne sie vorher selbst in Zahl und Einheit zu zerlegen.
Rückgabewert
unitType, z. B. "45deg". Die Eigenschaft kann gelesen und geschrieben werden.Beispiele
Winkel mit Einheit setzen und auslesen
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const angle = svg.createSVGAngle();
angle.valueAsString = '100grad';
console.log(angle.valueAsString); // Textform
console.log(angle.unitType === SVGAngle.SVG_ANGLETYPE_GRAD);
console.log(angle.valueInSpecifiedUnits); // in Gon
console.log(angle.value); // immer in Grad
Marker-Ausrichtung über orientAngle ändern
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const marker = document.createElementNS('http://www.w3.org/2000/svg', 'marker');
marker.setAttribute('orient', '30deg');
svg.append(marker);
const orient = marker.orientAngle.baseVal;
console.log(orient.valueAsString);
// Neuen Winkel setzen – das Attribut wird mitgeändert
orient.valueAsString = '90deg';
console.log(marker.getAttribute('orient'));
Benutzereingabe prüfen und ungültige Werte abfangen
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const angle = svg.createSVGAngle();
const setAngle = (input) => {
try {
angle.valueAsString = input.trim();
return `OK: ${angle.valueAsString} = ${angle.value}°`;
} catch (err) {
return `Ungültig (${err.name}): "${input}"`;
}
};
console.log(setAngle('45deg'));
console.log(setAngle('30'));
console.log(setAngle('viel'));
// Wichtig · Fallstricke
- Ungültige Werte: Wenn eine Zeichenkette nicht als Winkel gelesen werden kann, wird eine
DOMExceptionvom TypSyntaxErrorausgelöst. Ist das Objekt schreibgeschützt, etwa einanimVal, lautet der TypNoModificationAllowedError. Umschließen Sie Zuweisungen aus Benutzereingaben deshalb mittry…catch. - Nur deg, rad und grad: Die CSS-Einheit
turngehört nicht zu den Einheiten vonSVGAngle. Sie wird je nach Browser abgelehnt oder nicht richtig erkannt. - Genauigkeit: Die Zahlenwerte werden intern als 32-Bit-Gleitkommazahl (
float) gespeichert. Beiradkönnen deshalb beim Zurücklesen Rundungsabweichungen auftreten. Prüfen Sie Winkel nicht mit exakten Vergleichen. - orient="auto": Bei Markern mit
orient="auto"oder"auto-start-reverse"enthältorientAnglekeinen sinnvollen Winkel. Fragen Sie vorherorientTypeab. - Kompatibilität: Wird von allen modernen Browsern unterstützt.
SVGAnglewird selten genutzt. Für einfache Fälle reichen oftsetAttribute()oder CSS-Transformationen.