【问题标题】:Create many SVG `<use>` elements dynamically [duplicate]动态创建许多 SVG `<use>` 元素 [重复]
【发布时间】:2021-07-02 10:19:42
【问题描述】:

我想要一个循环,在&lt;svg&gt; 中创建许多相同的视觉元素。我打算使用&lt;use&gt; 来促进相同元素的复制。

JavaScript 成功添加了 &lt;use&gt; 元素,但由于某种原因它们不可见。

有趣的是,如果我从浏览器保存网页并打开保存的副本,添加的元素就会变得可见。也许需要调用某种刷新函数?

for (var x = 0; x < 100; x += 30) {
    for (var y = 0; y < 100; y += 30) {
        var use = document.createElement('use');
        use.setAttribute('x', x);
        use.setAttribute('y', y);
        use.setAttribute('href', '#cube');
        use.setAttribute('onclick', 'foo()');
        document.getElementById('mysvg').appendChild(use);
    }
}
<svg id="mysvg">
  <defs>
  <g id="cube">
    <rect width="21" height="24"/>
  </g>
  </defs>
    <use href="#cube" x="121" y="12"/>
    <use href="#cube" x="100" y="24"/>
</svg>

【问题讨论】:

    标签: javascript html svg


    【解决方案1】:

    试试

    var use = document.createElementNS('http://www.w3.org/2000/svg', 'use');
    

    而不是

    var use = document.createElement('use');
    

    来源:this answer。

    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2017-01-26
    • 2013-12-30
    相关资源
    最近更新 更多