Próbuję postępować zgodnie z przykładem here w sekcji cloneNode (czwarte wystąpienie "cloneNode" w dokumencie). Dokument mówi, że to DRAFT, więc zastanawiam się, czy te funkcje nie istnieją jeszcze w SVG?Jak używać javascript do klonowania elementu SVG?
Tu jest mój HTML:
<html>
<head>
<script>
var Root=document.documentElement
function clone(){
var G=document.getElementById("groupid")
alert('hi')
var NewG=G.cloneNode(true)
alert('bye')
var move="translate("+0+","+30+")"
NewG.setAttributeNS(null,"transform",move)
Root.appendChild(NewG)
}
clone()
</script>
</head>
<body>
<div style="" width="100px" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200px" viewBox="0 0 1 1" style="fill:purple;stroke:red" id="bigsvg"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="100%" height="100%">
<svg width="100%" ID="piece" y="0" x="0" class="black" height="100%">
<g transform="translate(0.005) scale(0.022)" id="groupid">
<path class="onepointsix" d="M 22 9 C 19.792 9 18 10.792 18 13 C 18 13.885103 18.29397 14.712226 18.78125 15.375 C 16.829274 16.496917 15.5 18.588492 15.5 21 C 15.5 23.033947 16.442042 24.839082 17.90625 26.03125 C 14.907101 27.08912 10.5 31.578049 10.5 39.5 L 33.5 39.5 C 33.5 31.578049 29.092899 27.08912 26.09375 26.03125 C 27.557958 24.839082 28.5 23.033948 28.5 21 C 28.5 18.588492 27.170726 16.496917 25.21875 15.375 C 25.70603 14.712226 26 13.885103 26 13 C 26 10.792 24.208 9 22 9 z " />
</g>
</svg>
</svg>
</div>
</body>
</html>
Jak widać, alert 'do widzenia' nie działa. Z góry dziękuję za pomoc.
Chcę dodać, że ja dostaję „Błąd typu:«null»nie jest przedmiotem (oceny„G .cloneNode ")" w przypadku niepowodzenia JS. – mareoraft
To dlatego, że 'getElementById' zwraca' null' (zobacz moją odpowiedź). –
Uwaga dla użytkowników SO: moja odpowiedź nie jest kompletna, to pytanie jest wciąż otwarte. –