我有我的文檔中的SVG和我添加了一個符號,以它使用JavaScript這樣的:爲什麼SVG使用javascript創建的元素沒有顯示?
var myScene =document.getElementById('myScene');
var useSVG = document.createElement('use');
useSVG.setAttribute('xlink:href','spriteSheet.svg#mySymbol');
useSVG.setAttribute('x','10');
useSVG.setAttribute('y','30');
useSVG.setAttribute('width','10');
useSVG.setAttribute('height','10');
myScene.appendChild(useSVG);
符號不顯示,而生成的代碼是完全一樣寫在HTML至極另一個節點是正確顯示。調試器顯示
代碼:
<svg id="myScene" width="200px" height="200px">
<use xlink:href="spriteSheet.svg#mySymbol" x="5" y="50" width="10" height="10"></use>
<!-- this one was in html, it is visible -->
<use xlink:href="spriteSheet.svg#mySymbol" x="10" y="30" width="10" height="10"></use>
<!-- this one is added with javascript. it is not displayed -->
</svg>
下面的答案是遠遠不夠的,但指向正確的方向。在這裏你還必須使用'document.createElementNS'而不是'document.createElement'來創建'use'元素。這[回答](http://stackoverflow.com/questions/16488884/add-svg-element-to-existing-svg-using-dom)解決了類似的問題。 – 2014-09-20 10:41:17
我試過了所有的東西,我無法讓它工作。無法找到工作示例。我的解決方案是給硬編碼的USE標記一個ID,並用node.cloneNode()複製它。仍在尋找一個工作的例子。 – bokan 2014-09-20 12:23:04