如何使用纯Javascript向嵌入的SVG添加元素?

How can I add elements to an embedded SVG with plain Javascript?

本文关键字:SVG 添加 元素 何使用 Javascript      更新时间:2023-09-26

我写了一个小的示例页面,看起来像这样:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>IGO&nbsp;&ndash;&nbsp;IRC Go</title>
        <link rel="stylesheet" type="text/css" href="igo.css" />
        <script type="text/javascript" src="igo.js"></script>
    </head>
    <body>
        <h1 onclick="makeCircle()">IGO&nbsp;&ndash;&nbsp;IRC Go</h1>
        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="board" 
            width="4" height="4" viewBox="0 0 4 4">
        <!-- content will be generated by script -->
        </svg>
        <div id="foo"></div>
    </body>
</html>

其中igo.js看起来像这样:

function makeCircle() {
    var circle = document.createElement("circle");
    var board = document.getElementById("board");
    circle.cx = 4;
    circle.cy = 4;
    circle.r  = 4;
    circle.fill = "lime";
    board.appendChild(circle);
}

问题是:它不起作用;圆圈不显示。你能帮我吗?

请查看以下网址:http://blog.blazingcloud.net/2010/09/17/svg-scripting-with-javascript-part-1-simple-circle/

你应该使用这样的代码:

var c2 = document.createElementNS("http://www.w3.org/2000/svg", "circle");
c2.setAttribute("cx", "250");
c2.setAttribute("cy", "100");
c2.setAttribute("r", "60");
c2.setAttribute("fill", "#996699");
c2.setAttribute("stroke", "#AA99FF");
c2.setAttribute("stroke-width", "7");
mySvg.appendChild(c2);

您当前正在编辑的是DOM对象,而不是浏览器使用的属性。

实例:http://jsfiddle.net/CJrrz/