我有一个非常简单的svg只有一行
<svg version="1.1" id="animation" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 640 480" xml:space="preserve" preserveAspectRatio="xMinYMin meet" baseProfile="tiny">
<line id="line-1" style="stroke:#777777;stroke-miterlimit:10;" x1="358" y1="332.5" x2="371.3" y2="364.7"/>
</svg>
我使用jquery获取该行并使用getTotalLength()
找到它的长度var len = $("#line-1").get(0).getTotalLength();
但我的浏览器一直提供此错误警告
未捕获的TypeError:$(...)。get(...)。getTotalLength不是函数
有人能告诉我line元素是否可以使用getTotalLength()?如果没有,我怎样才能获得该行的长度。
感谢。
答案 0 :(得分:11)
line
并不存储长度,因此您需要使用距离公式自行获取:
var line = $("#line-1").get(0);
var len = dist(line.x1.baseVal.value, line.x2.baseVal.value,
line.y1.baseVal.value, line.y2.baseVal.value);
$("#len").text(len);
function dist(x1, x2, y1, y2){
return Math.sqrt( (x2-=x1)*x2 + (y2-=y1)*y2 );
}
但是path
支持getTotalLength()
功能。因此,如果您想使用它,则需要使用<path>
而不是<line>
。要将<line>
设置为<path>
,您可以执行以下操作:
<path id="line-1" style="stroke:#777777;stroke-miterlimit:10;" d="M 358,332.5 L 371.3,364.7"/>
答案 1 :(得分:2)
对于任何想知道是否在2020年的人:
JQUERY(3.4.1)>> $('#lineID').get(0).getTotalLength()
JS >> document.getElementById('lineID').getTotalLength()
适用于<lines/>
答案是肯定的。
经过测试的浏览器:
Firefox 76.0.1
Chromium:81.0.4044.138(正式版本)(64位)
铬83.0.4103.61
Opera 68.0.3618.125