【发布时间】:2016-01-04 15:03:53
【问题描述】:
我正在处理一个 SVG 文件,我想计算有多少多边形具有某个类(比如说“.red”)
这是简单的 javascript 循环:
var polygons = document.getElementsByTagName("polygon");
var j = 0;
for (i = 0; i < polygons.length; i++) {
if (polygons[i].className == "red") {
j++;
}
};
alert("There are " + j + " red shapes")
和小提琴: https://jsfiddle.net/tuj0rmnx
我无法得到预期的结果。 返回 0 而不是 3... 想不通为什么... 我猜肯定有 DOM 问题或其他问题,但无法正确处理...
我已阅读:How to access SVG elements with Javascript 但我不想创建一个事件。最后我想要实现的就是使用 document.write() 方法在页面中自动“打印”结果......
任何帮助表示赞赏!
【问题讨论】:
-
调试101:添加
console.log(polygons[i].className);,看看得到的值。 -
我很难找到正确的方法来执行此操作,但据我所知,SVG 内容被视为与其周围的 HTML 不同的文档。您需要查询 SVG 元素本身,以某种方式 获取其“文档”,然后在其中进行查询。这类似于您检查 iframe 的方式。
-
document.querySelector('svg polygon')是您访问内部 svg 元素的方式。如 - “在 svg 文档中查找多边形。”
标签: javascript css svg polygon getelementsbytagname