Javascript 更改svg字符串中的信息

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字符串。 为了获得信息,我在这个链接中使用jquery获得了答案。但是有人知道如何改变阿曲布他吗?例如,如何将层2的矩形高度更改为其他值?如何添加不存在的新属性?例如,要在层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>

第一层
第二层

例如,我的字符串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();