En HTML, je peux effacer un élément <div>
avec cette commande:
div.innerHTML = "";
Existe-t-il un équivalent si j'ai un élément <svg>
? Je ne parviens pas à trouver une méthode innerHTML
ni innerXML
ni même innerSVG
.
Je sais que le DOM SVG est un sur-ensemble du DOM XML, alors je sais que je peux faire quelque chose comme ceci:
while (svg.lastChild) {
svg.removeChild(svg.lastChild);
}
Mais c'est à la fois fastidieux et lent. Existe-t-il un moyen plus rapide ou plus simple d'effacer un élément SVG?
Vous avez déjà donné une réponse: vous pouvez toujours boucler tous les enfants et les supprimer. Si vous pensez que vous avez trop de nœuds enfants, vous voudrez peut-être remplacer le nœud svg par un nœud vide. Si votre nœud svg a des attributs, vous pouvez utiliser une balise dans laquelle vous placez tous les nœuds enfants, puis remplacez simplement le nœud par un nœud vide.
Si vous utilisez jQuery, vous pouvez simplement faire
$("#svgid").empty();
Ceci supprime tous les éléments enfants du svg tout en laissant ses autres attributs tels que width et height intacts.
Utilisez d3.js. Cela supprimera tous les nœuds de contenu de svg.
svg.selectAll("*").remove();
J'accepte d'utiliser le clone et de remplacer l'élément par le cloné.
Un seul code de ligne:
svg.parentNode.replaceChild(svg.cloneNode(false), svg);
utilisez ceci? http://keith-wood.name/svg.html
il y a aussi raphael: jQuery SVG vs. Raphael
Je serais tenté de fouiller et de voir qui ils appliquent leurs méthodes .destroy()
.
J'ai essayé svg.text("")
et cela semble fonctionner. Efface tout le texte intérieur, conserve les attributs.
Vous pouvez utiliser le clone et remplacer l'élément par celui cloné.
var parentElement = svg.parentElement
var emptySvg = svg.cloneNode(false);
parentElement.removeChild(svg);
parentElement.appendChild(emptySvg);
Ceci ajoutera le svg à la fin, Vous voudrez peut-être obtenir l’élément avant et ajoutez ensuite
element = document.getElementById("elementID");
element.parentNode.removeChild(element);
J'ai eu l'idée de http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/