【发布时间】:2010-12-04 12:47:06
【问题描述】:
我在 XHTML 页面中有以下 SVG 代码
<svg:svg>
<svg:svg width="450" heigth="450" viewBox="0 0 500 500">
<svg:defs>
<svg:g id='mygroup'>
<svg:circle id='a' cx="15" cy="15" r='15' fill="green" fill-opacity="0.3"/>
<svg:line id='b' x1="15" y1="15" x2="15" y2="0" style="stroke: black;" />
</svg:g>
</svg:defs>
<svg:rect width="400" height="400" fill="white" stroke="black" />
<svg:use id="g1" xlink:href="#mygroup" x="100" y="100" onclick="moveMe()" />
<svg:use id="g2" xlink:href="#mygroup" x="100" y="200" />
</svg:svg>
我想用下面的javascript代码修改它
<script><![CDATA[
function moveMe(){
obj = document.getElementById("g1");
obj.setAttributeNS(null, "x", "200"); //Ok it works
//How can I change the color of the a circle in g1?
obj = document.getElementById("g1.a");
obj.setAttributeNS(null, "fill", "red"); //It doesn't work
}
]]></script>
如何更改“g1”中“a”圆圈的颜色?如何从我的 javascript 代码中访问它?
编辑:如果我有第二个名为 g2 的 mygroup 项目,我不想更改它的颜色。
【问题讨论】:
-
我不是 svg 专家,但从外观上看,您的 JavaScript 正在操纵 DOM,这是非扩展形式,所以不,您不能更改 mygroup 并使其适用到 g1 但不是 g2。您必须创建 mygroup 的副本,并将 g1 附加到一个副本,将 g2 附加到另一个副本。然后你就可以独立操作它们了。
标签: javascript xhtml svg