我正在尝试访问 svg 中的元素以向其添加矢量效果属性,但无法获取第一项。
我尝试使用 getElementsByTag('path'),它返回未定义,我也尝试作为集合的第一个元素访问,但它返回未定义
这就是 SVG 的样子,请注意我删除了许多元素并去掉了 d="" 值以使其更具可读性
<svg xmlns="http://www.w3.org/2000/svg" id="svgMain" width="1203px" height="800px" version="1.1" preserveAspectRatio="xMidYMid meet" viewBox="54.5663 -109.9401 432.9000 287.8803"class="undefined">
<g id="all" transform="translate(0,236.9070) scale(1,-1) ">
<g id="first_collection">
<g id="0" class="outer closed 0">
<path d="... "></path>
<g id="1" class="inner closed 0">
<path d="..." vector-effect="non-scaling-stroke" stroke-width="2px"></path>
</g>
<g id="2" class="inner closed 0">
<path d="... " vector-effect="non-scaling-stroke" stroke-width="2px"></path>
</g>
<g id="3" class="inner closed 0">
<circle cx="468.6413" cy="225.1570" r="1.0625" vector-effect="non-scaling-stroke" stroke-width="2px"></circle>
</svg>
下面的 Javascript,根在代码的前面定义,前两个赋值很容易访问上面的相关元素,因为您可以看到矢量效果被添加到所有元素。但是我也需要将它添加到第一个“路径”中,但似乎无法访问它。另请注意,我已更改变量名称,如果有任何拼写错误,请忽略,因为它在原始代码中有效
var first_collection = root.getElementById('first_collection');
var children = all.children
function setStrokeScale(htmlCollection) {
for (var i = 0; i < htmlCollection.length; i++) {
var sub_children = htmlCollection[i].children;
for (var i = 0; i < sub_children.length; i++) {
var sub_sub_children = sub_children[i].children
if (sub_sub_children.length > 0) {
sub_sub_children[0].setAttribute("vector-effect", "non-scaling-stroke");
sub_sub_children[0].setAttribute("stroke-width", "2px");
}
}
}
}