如何解析 SVG 元素的 viewBox x、y、宽度和高度值?

How to parse SVG element's viewBox x, y, width and height values?

假设我有一个 SVG 元素:

<svg id="myMap" viewBox="0 0 200 200"></svg>

我如何获得特定值 myMap 的视图框?举个简单的例子:如何获取 myMap 的 viewBox 属性的 "x" 值? (对于上面的示例,x 值是第一个零 (0))。

下面是我尝试过的一些语法变体:

<script>
  var myMap = Snap("#myMap");
  alert(myMap.attr("viewBox"));//dislays [object Object]
  alert(myMap.attr("viewBox.vbx"));//also dislays [object Object]
  alert(myMap.attr("viewBox.x"));//also dislays [object Object]
</script>

以上所有示例都在警告框上显示 [object Object]。
我需要视口的 x、y、宽度和高度的适当浮点值来实现地图中的放大和缩小功能。

attr() 方法 returns 一个对象而不是一个标量,而 alert() 需要一个标量。如果您使用 console.log() 而不是 alert(),您可以在 JavaScript 控制台中看到对象的内容。

要获取 svg 的 x、y、宽度和高度,请使用

var myMap = Snap("#myMap");
var attrs = myMap.attr("viewBox");

console.log(attr.x);
console.log(attr.y);
console.log(attr.width);
console.log(attr.height);

您总是可以直接从 DOM

中阅读它

alert(document.getElementById("myMap").viewBox.baseVal.width);
<svg id="myMap" viewBox="0 0 200 200"></svg>

谢谢@Robert Longson

alert(document.getElementById("myMap").viewBox.baseVal.width);
<svg id="myMap" viewBox="0 0 200 200"></svg>

alert(document.getElementById("myMap").viewBox.baseVal.width);
<svg id="myMap" viewBox="0 0 200 200"></svg>