Javascript 更改svg字符串中的信息
我有一个svg字符串。 为了获得信息,我在这个链接中使用jquery获得了答案。但是有人知道如何改变阿曲布他吗?例如,如何将层2的矩形高度更改为其他值?如何添加不存在的新属性?例如,要在层2的矩形中添加stroke dasharray=“1,1”吗?谢谢Javascript 更改svg字符串中的信息,javascript,jquery,string,svg,Javascript,Jquery,String,Svg,我有一个svg字符串。 为了获得信息,我在这个链接中使用jquery获得了答案。但是有人知道如何改变阿曲布他吗?例如,如何将层2的矩形高度更改为其他值?如何添加不存在的新属性?例如,要在层2的矩形中添加stroke dasharray=“1,1”吗?谢谢 <svg width="612" height="394" xmlns="http://www.w3.org/2000/svg"> <g> <title>Layer 1</title>
<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>
第一层
第二层
例如,我的字符串es:
str=“我没有尝试过,但应该可以:
设置新值:
$("svg").find("rect#svg_2").attr("height", new_val);
只需为其设置一个值,而不只是检索
使用jquery,您可以使用的第二个参数来使用要设置的值
$('#svg_2').attr('height', 200);
及
演示在
如果您想要实际的字符串,并且svg不在DOM中,而只是一个变量,那么您可以这样做
var fixedstr = $(str).wrapAll('<div>')
.find('g:eq(1) rect')
.attr('height', 200)
.attr('stroke-dasharray', "1,1")
.closest('div')
.html();
var fixedstr=$(str).wrapAll(“”)
.find('g:eq(1)rect'))
.attr('height',200)
.attr('stroke-dasharray',“1,1”)
.最近的('div')
.html();
首先,我们从中创建一个jquery对象,然后将其包装在div
元素中,以便以后可以获得它的.html()
(实际的svg字符串)
使用.Find('g:eq(1)rect')
在第二个g
元素中查找rect,然后使用.attr()
更改其属性
最后,使用.closest('div')
返回容器div,并使用.html()
获取内容
这个版本的演示在嗨,我试过$(str).find('g:eq(0)rect').attr('height','200'));没有错误,但高度不变。@user1872320,str
在另一个答案中是一个包含选择器的变量,无法找到元素。.您是否有一个str
变量,它包含什么?否则使用我提供的演示中的代码。.str是字符串->str=“@user1872320,如果str
是字符串,然后需要将结果放入DOM中。。否则,您只是在操作内存中的SVG。@user1872320,刚才注意到您实际上只是在操作字符串。。所以你不想在屏幕上显示这个,只想更改字符串?你需要编辑的字符串吗?嗨,我试过$(str).find('g:eq(0)rect').attr('height','200');没有错误,但高度不变
var fixedstr = $(str).wrapAll('<div>')
.find('g:eq(1) rect')
.attr('height', 200)
.attr('stroke-dasharray', "1,1")
.closest('div')
.html();