SVG childNodes 返回文本

F L*_*has 3 javascript svg dom

我有一个内联 SVG 并尝试循环遍历组元素内的所有路径。使用时childNodes我发现浏览器text为每个路径添加一个额外的子路径。我很好奇为什么浏览器要这样做,以及是否有一种聪明的方法来循环真正的子元素。

我创建了一个小 JSBin 来演示该行为:http://jsbin.com/tutisakege/1/edit ?html,css,js,console,output

(查看控制台的输出)

超文本标记语言

<svg version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     viewBox="0 0 100 100">
  <g id="test">
    <path d="M50 0 L0 100 L100 100 Z" />
    <path class="red" d="M25 0 L25 25 L75 0 L75 25 Z" />
  </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

JS

var group = document.querySelector('#test'),
    children = group.childNodes;
Run Code Online (Sandbox Code Playgroud)

尽管我的测试组只有2 条路径,但该children对象现在拥有5 个条目。

注意:我知道我可以循环遍历所有条目并检查是否有 的实例,SVGPathElement但这对我来说似乎很麻烦。

(我已经在最新的Chrome和Firefox中测试过)