【发布时间】:2017-01-31 07:23:30
【问题描述】:
我有以下 SVG 文本元素:
<text data-model-id="k10673" x="584" y="266" fill-opacity="1" style="font: 12px Arial,Helvetica,sans-serif; " fill="#a5d16f">BU YIL SONU</text>
它大约在屏幕中间。我可以按如下方式对其进行检查:
我需要获取此文本的宽度。在 chrome 调试器上,我可以看到文本的宽度为 83.941
但是,我无法从我的 Javascript 页面获取此宽度。任何与宽度相关的方法都返回零,尽管它已被 Chrome 调试器正确显示。
我得到的元素如下:
var x = document.querySelector("#k11489 > g:nth-child(27) > text:nth-child(1)")
然后,以下 Javascript 函数都返回零或未定义:
x.getComputedTextLength()
x.getBBox().width
x.style.width
在获取 jQuery 对象后,我也尝试了以下 jQuery 函数,但是,它们都没有返回宽度:
x.width() //Returns the function
x.innerWidth() //Returns null
x.outerWidth() //Returns null
注意:为了确保 x 指向文本元素,我通过控制台检查它们。以下是 Javascript 和 jQuery 对象的快照:
如何通过 Javascript 或 jQuery 获取该对象的宽度?
【问题讨论】:
-
您是否要等到 DOM 准备好后再尝试访问元素?
-
@PaulLeBeau 我正在 Chrome 的开发者控制台中尝试这些,在 DOM 加载几分钟后。
-
你知道
x是否指向文本元素吗? -
@ConnorsFan 是的,我编辑了问题并添加了 x 指向文本元素的快照。
-
好的。我们能看到 SVG 元素本身的声明吗?当我使用
getComputedTextLength或getBBox进行测试时,我可以获得文本元素的宽度,但我不确定它是在与您相同的上下文中声明的。
标签: javascript jquery html css svg