- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 SVG <g>
使用 JavaScript 的标签。我需要在每个 rect
中获取内部标签(例如: path
、 <g>
等)标签。
这是我用来获取特定标签的内容。
var stess = selectedElement.getElementsByTagName('rect');
console.log(stess);
但我也有动态标签。我应该如何检索内部标签的值?更重要的是,如何更改这些内部标签的宽度?
这是我试过的代码:
$('.test').change(function() {
console.log(selectedElement.children()); // Results Error
}
我最终记录了 <g id="xxx" fill-opacity="1" stroke-opacity="1"><rect></g>
.我应该如何进行?
最佳答案
Grabbing a Child(呃,我可以这样写吗?)
首先,获取 <g>
的所有 child 标签,你可以使用 childNodes
属性(big example here):
var allGs = document.getElementsByTagName('g');
var firstG = allGs[0];
var firstChild = firstG.childNodes[0];
然后您可以抓取每个 child 的边界框来抓取宽度/高度。我会使用 getBBox
方法(source):
var boundingBox= firstChild.getBBox();
var width = boundingBox.width
有关边界框的更多信息,请查看 docs .
这是 an example Fiddle显示如何从 child 那里获取属性。
多个 child
这是另一个例子 Fiddle获取每个 <g>
的所有 child 的宽度标记——或查看下面的相关代码:
var allGs = document.getElementsByTagName('g');
for (var i=0; i<allGs.length; i++) {
var gElem = allGs[i];
var children = gElem.children;
// `children` is an array of the form [child, child, ...].
for (var j=0; j < children.length; j++){
var child = children[j];
var box = child.getBBox();
var width = box.width;
//... Now do whatever you wanted to do with the width.
}
}
注意:element.childNodes
将收集子元素之间不需要的空白; element.children
只选择 child ( Docs )。谢谢,Eric !
设置属性
请注意,如果您只想更改宽度,则无需抓取边界框;你可以只使用 setAttribute
方法(source)。例如,如果您想将第一个 child 的宽度设置为 100px:
//A condensed version of the "firstChild" retrieval from before:
var firstChild = document.getElementsByTagName('g')[0].childNodes[0];
var newWidth = 100;
firstChild.setAttribute("width", newWidth)
检索属性
关于检索其他“值”——这取决于您的意思。如果你想要一个属性,那么你可以只使用getAttribute
每个 child 的方法(documentation),而不是获取 BBox 的宽度(SO post with examples)。这与我们在上面的代码片段中设置属性的方式类似:
//A condensed version of the "firstChild" retrieval from before:
var firstChild = document.getElementsByTagName('g')[0].childNodes[0];
var value = firstChild.getAttribute("src")
// ... Now do what you will with that value.
关于javascript - 如何在 svg 的 <g> 标签中获取内部标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803812/
我是一名优秀的程序员,十分优秀!