javascript - 更改 svg 字符串中的信息

标签 javascript jquery string svg

我有一个 svg 字符串。 为了获取信息,我在这个链接中得到了答案how to get information from a svg string in javascript?使用 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 width........</g></svg>"

最佳答案

只需为其设置一个值,而不仅仅是检索..

对于 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 字符串)。

使用 .find('g:eq(1) rect') 在第二个 g 元素中找到 rect,然后使用 .attr() 改变它的属性..

最后使用.closest('div')回到我们的容器div,并使用.html()获取内容..

此版本的演示 http://jsfiddle.net/gaby/FX67f/2/

关于javascript - 更改 svg 字符串中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14120774/

相关文章:

C++。删除额外的连续重复字符串的最有效方法?

javascript - react : Should I pass this reference of parent component to child component

javascript - scope.$watch() 在输入键按下或 location.path 工作后未触发

javascript - ng-repeat 内的 ng-if 始终返回 true

jquery - 如何更改命名 div 中的嵌套 div 以显示为显示 :inline using CSS or jQuery selectors?

jquery 获取带有连字符和区分大小写的 HTML 5 数据属性

javascript - 事件项目菜单 RoR

javascript - jquery/javascript - 如何使用 if 语句 "undo"点击事件?

java - 最终字符串类与非最终字符串类的 final方法

java - 将一个char数组转换成多个String