我有一个svg字符串。 为了获得信息,我在这个链接中得到了答案how to get information from a svg string in javascript? usign jquery。但有谁知道如何更改任何属性?例如,如何将第2层的rect的高度更改为其他值?如何添加一个不存在的新属性?例如,在第2层的矩形中添加stroke-dasharray =“1,1”?感谢
<svg width="612" height="394" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Layer 1</title>
<rect id="svg_1" height="152" width="265" y="44" x="91" stroke-width="5" stroke="#000000" fill="#FF0000"/>
</g>
<g>
<title>Layer 2</title>
<rect id="svg_2" height="125" width="151" y="157" x="399" stroke-width="5" stroke="#000000" fill="#FF0000"/>
</g>
</svg>
我的字符串例如:str="<svg width........</g></svg>"
答案 0 :(得分:2)
只需为其设置一个值,而不仅仅是检索..
使用jquery,您可以使用.attr()
的第二个参数来设置值...
$('#svg_2').attr('height', 200);
和
$('#svg_2').attr('stroke-dasharray', "1,1");
演示 http://jsfiddle.net/gaby/FX67f/1/
如果你想要实际的字符串,并且svg不在DOM中而只是一个变量那么你可以做
var fixedstr = $(str).wrapAll('<div>')
.find('g:eq(1) rect')
.attr('height', 200)
.attr('stroke-dasharray', "1,1")
.closest('div')
.html();
首先我们从中创建一个jquery对象,然后将它包装在div
元素中,以便我们以后可以得到它.html()
(实际的svg字符串)
使用g
在第二个.find('g:eq(1) rect')
元素中找到rect,然后使用.attr()
更改其属性..
最后使用.closest('div')
返回我们的容器div,并使用.html()
获取内容..
答案 1 :(得分:0)
我没试过,但它应该有效: 设置一个新值:
$("svg").find("rect#svg_2").attr("height", new_val);