次のコードに似たHTML構造があります。
<div id='intro'>
<svg>
//draw some svg elements
<svg>
</div>
JavaScriptとDOMを使用して、上記で定義したSVGにいくつかの要素を追加できるようにしたいと思います。どうすればそれを達成できますか?考えていた
var svg1=document.getElementById('intro').getElementsByTagName('svg');
svg1[0].appendChild(element);//element like <line>, <circle>
DOMの使用方法やappendChildに渡す要素の作成方法についてはあまり詳しくないので、これを手伝ってください。または、この問題を解決するために他にどのような選択肢があるのか教えてください。どうもありがとう。
HTML要素を作成する場合は、document.createElement
関数を使用します。 SVGは名前空間を使用するため、document.createElementNS
関数を使用する必要があります。
var svg = document.getElementsByTagName('svg')[0]; //Get svg element
var newElement = document.createElementNS("http://www.w3.org/2000/svg", 'path'); //Create a path in SVG's namespace
newElement.setAttribute("d","M 0 0 L 10 10"); //Set path's data
newElement.style.stroke = "#000"; //Set stroke colour
newElement.style.strokeWidth = "5px"; //Set stroke width
svg.appendChild(newElement);
このコードは次のようなものを生成します。
<svg>
<path d="M 0 0 L 10 10" style="stroke: #000; stroke-width: 5px;" />
</svg>
createElement
: https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement
createElementNS
: https://developer.mozilla.org/en-US/docs/Web/API/Document/createElementNS
JSを使用してsvgを多数処理している場合は、d3.jsを使用することをお勧めします。それをページに含めて、次のようなことをしてください。
d3.select("#svg1").append("circle");