HTMLでは、次のコマンドで<div>
要素をクリアできます。
div.innerHTML = "";
<svg>
要素がある場合、同等のものはありますか? innerHTML
もinnerXML
もinnerSVG
メソッドすら見つかりません。
SVG DOMはXML DOMのスーパーセットであることがわかっているので、次のようなことができることを知っています。
while (svg.lastChild) {
svg.removeChild(svg.lastChild);
}
しかし、これは退屈で時間がかかります。 SVG要素をクリアするより高速または簡単な方法はありますか?
すでに1つの答えがありました。いつでもすべての子をループして削除できます。子ノードが多すぎると思う場合は、svgノードを空のノードに置き換えたいかもしれません。 svgノードにいくつかの属性がある場合は、すべての子ノードを配置するタグを使用して、ノードを空のノードに置き換えることができます。
D3.jsを使用します。これにより、svgからすべてのコンテンツノードが削除されます。
svg.selectAll("*").remove();
クローンを使用し、要素をクローンしたものに置き換えることに同意します。
1行のコードのみ:
svg.parentNode.replaceChild(svg.cloneNode(false), svg);
クローンを使用して、エレメントをクローンされたエレメントに置き換えることができます。
var parentElement = svg.parentElement
var emptySvg = svg.cloneNode(false);
parentElement.removeChild(svg);
parentElement.appendChild(emptySvg);
これにより、最後にsvgが追加されます。前に要素を取得し、それに応じて追加することをお勧めします。
これを使って? http://keith-wood.name/svg.html
ラファエルもあります: jQuery SVG vs. Raphael
私は、彼らが.destroy()
メソッドを実行している人を探して、誘惑したくなるでしょう。
svg.text("")
を試しましたが、うまくいくようです。すべての内部テキストをクリアし、属性を保持します。
element = document.getElementById("elementID");
element.parentNode.removeChild(element);
http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/ からアイデアを得た