Javascript SVG上的JS——获取元素的innerHTML
我想从SVG文件中提取一些数据。我知道SVG是XML,所以我认为用JS把数据哄出来会很容易 所以,我想从SVG中提取一组文本。所以,我启动了chrome的JS控制台,并尝试做一些事情。我需要获取数组中的所有Javascript SVG上的JS——获取元素的innerHTML,javascript,xml,svg,Javascript,Xml,Svg,我想从SVG文件中提取一些数据。我知道SVG是XML,所以我认为用JS把数据哄出来会很容易 所以,我想从SVG中提取一组文本。所以,我启动了chrome的JS控制台,并尝试做一些事情。我需要获取数组中的所有tspan元素,提取它们的文本,并对其进行分类 我指的是现在 因此,我使用a=document.getElementsByTagName('tspan')。现在,我尝试a[20].innerHTML,并获得未定义的。合理的;它不是HTML,iirc innerHTML无论如何都是非标准的 然后
tspan
元素,提取它们的文本,并对其进行分类
我指的是现在
因此,我使用a=document.getElementsByTagName('tspan')
。现在,我尝试a[20].innerHTML
,并获得未定义的。合理的;它不是HTML,iirc innerHTML无论如何都是非标准的
然后我尝试a[20].childNodes[0]
并得到“ELF”
。好吧,这就是我想要的。但是,由于某些原因,该对象被视为字符串,但无法转换为字符串。如果我尝试转换它(这样我可以使用matches()
和indexOf()
),我会得到“[对象文本]”
。深入研究Text.prototype
并没有帮助——我找不到任何将其转换为字符串的函数
那么,如何通过JS获取SVG对象的innerHTML呢?选择您所拥有的元素,但使用以下方法访问其文本:
var content = a[20].textContent;
这不能替代SVG中的innerHTML
,但只要您只想提取文本而不想添加标记,它就可以工作。在控制台中检查时,A看起来像字符串,但它不是字符串。对于字符串,您需要。尝试:
此外,出于某种原因,原型显示,人们通常在HTML中看到的某些其他内置函数(事实上,正是我需要的函数)都丢失了。太好了--现在W3C正在密谋反对我…顺便问一下,索引20有什么意义?这个索引值永远不会是我假设的任何其他数字?@NateNeuhaus 20只是指给定的OPs代码。此处应选择第20个
元素。可以是任何其他的。主要方面是以后要使用的属性(textContent
)。
document.querySelectorAll('tspan')[20].childNodes[0].nodeValue