gpt4 book ai didi

javascript - 如何让Chrome重绘SVG动态添加的内容?

转载 作者:行者123 更新时间:2023-12-03 01:32:22 25 4
gpt4 key购买 nike

我已将圆形元素动态添加到 iFrame 中显示的 svg 中。 Chrome 没有显示新元素,还没有尝试过 FF。我需要调用某种重画/刷新吗?第一个圆圈实际上在 svg 文档中,其余的来自脚本。

<iframe id="svgFrame" src="xmlfile1.svg" width="300" height="300">
<svg xmlns="http://www.w3.org/2000/svg" id="SVG1" width="200" height="200">
<circle cx="20" cy="20" r="5"/>
<circle cx="165" cy="80" r="32"/>
<circle cx="15" cy="38" r="32"/>
<circle cx="140" cy="39" r="30"/>
<circle cx="178" cy="32" r="22"/>
...etc
<circle cx="166" cy="130" r="16"/>
</svg>
</iframe>

创建元素的 JavaScript:

function RandomNumber(min, max) {
var r;
r = Math.floor(Math.random() * (max - min + 1)) + min;
return r;
}

var svg = document.getElementById("svgFrame").contentDocument;

for (var i = 0; i < 99; i++) {

var n = svg.createElement("circle");
n.setAttribute("cx" , RandomNumber( 0 , 200) );
n.setAttribute("cy" , RandomNumber(0, 200) );
n.setAttribute("r" , RandomNumber(5, 35) );

svg.documentElement.appendChild(n);
}

最佳答案

我还没有尝试过你正在做的事情,你基本上有两个来源,但我知道 Chrome 在动态添加内容时不需要刷新/重绘。

这是我的代码,也许这会对您有所帮助。

xmlns = "http://www.w3.org/2000/svg";
var C = document.createElementNS(xmlns,"circle");
C.setAttributeNS(null, "cx", cx);
C.setAttributeNS(null, "cy", cy);
C.setAttributeNS(null, "r", rad);
document.getElementById("background").appendChild(C);

其中背景只是组的 ID(g 标签)

关于javascript - 如何让Chrome重绘SVG动态添加的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2544686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com