【问题标题】:Failed to execute 'getTotalLength'无法执行“getTotalLength”
【发布时间】:2020-10-03 22:49:05
【问题描述】:

我正在使用 JS 生成内联 SVG。我使用getTotalLength() 计算一些stroke-dasharray 值来为折线设置动画。

这一切都很好,每当我第一次执行我的draw() 函数时。但是,当我第二次执行相同的函数以添加一些额外的折线时,它不起作用。相反,它会抛出:

Error: Failed to execute 'getTotalLength' on 'SVGGeometryElement': This element is non-rendered element.

现有的 stackoverflow 帖子与此问题不匹配。

感谢您的帮助。

使用:最新的 Chrome 版本和简单的 JS。

【问题讨论】:

  • _这个元素是非渲染元素_你试图在什么元素上执行getTotalLength?很高兴看到一个例子。

标签: javascript svg


【解决方案1】:

你在使用 UIkit 吗?看看this Github issue

编辑

似乎它不像我最初想象的那样是特定于 UIkit 的(错误消息的语法看起来不像来自 JS 引擎)。

但是查看修复链接问题的拉取请求,当元素不可见时似乎确实会发生此错误,因为只有在与元素关联的绘制工件时才可计算长度。

通过检查元素的任何节点是否具有offsetWidthoffsetHeight 或边界框 (getClientRects()) 来测试可见性。

【讨论】:

  • 不,使用 SVG.js 实例化 SVG 对象。但是,我在实际的 DOM 对象上调用 getTotalLength() ......它在第一次 draw() 调用中有效,并且在每次连续调用中都失败。
  • @BoA456 您需要添加代码。否则我们将无法为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 2017-01-21
  • 2012-04-01
  • 2018-02-23
  • 2013-02-28
  • 2019-10-14
  • 2020-11-18
  • 2017-08-06
  • 2012-08-03
相关资源
最近更新 更多