J'ai un morceau de code JavaScript qui crée (en utilisant D3.js) un svg
élément qui contient un graphique. Je veux mettre à jour le graphique en fonction des nouvelles données provenant d'un service Web utilisant AJAX, le problème est que chaque fois que je clique sur le bouton de mise à jour, il génère une nouvelle svg
, donc je veux supprimer l'ancienne ou mettre à jour son contenu.
Voici un extrait de la fonction JavaScript où je crée le svg
:
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
Comment puis-je supprimer l'ancien svg
élément ou au moins remplacer son contenu?
javascript
ajax
svg
d3.js
Sami
la source
la source
d3.select("svg").empty();
Réponses:
Voici la solution:
Il s'agit d'une
remove
fonction fournie par D3.js.la source
svg.selectAll("*").remove();
. Cela efface le contenu de l'élément même s'il est définisvg
sur un élément de regroupement (g
).Si vous voulez vous débarrasser de tous les enfants,
supprimera tout le contenu associé au svg.
Remarque : Ceci est recommandé dans le cas où vous souhaitez mettre à jour le graphique.
la source
La définition de l'attribut id lors de l'ajout de l'élément svg peut également laisser d3 sélectionner donc remove () plus tard sur cet élément par id:
la source
J'avais deux graphiques.
Cela a supprimé tous les graphiques.
Cela a fonctionné pour supprimer le graphique à barres existant, mais je n'ai pas pu rajouter le graphique à barres après
J'ai essayé ça. Cela m'a non seulement permis de supprimer le graphique à barres existant, mais également de rajouter un nouveau graphique à barres.
Je ne sais pas si c'est la bonne façon de supprimer et de rajouter un graphique dans d3. Il a fonctionné dans Chrome, mais n'a pas été testé dans IE.
la source
J'utilise le SVG en utilisant D3.js et j'ai eu le même problème.
J'ai utilisé ce code pour supprimer le svg précédent mais le gradient linéaire à l'intérieur de SVG ne venait pas dans IE
$ ("# container_div_id"). html ("");
puis j'ai écrit le code ci-dessous pour résoudre le problème
ici, je supprime le g et le chemin précédents à l'intérieur du SVG, le remplaçant par le nouveau.
Garder mon dégradé linéaire à l'intérieur des balises SVG dans le contenu statique, puis j'ai appelé le code ci-dessus, cela fonctionne dans IE
la source
Vous pouvez également simplement utiliser jQuery pour supprimer le contenu de la div qui contient votre svg.
la source
Vous devriez utiliser
append("svg:svg")
, pasappend("svg")
pour que D3 crée l'élément avec le 'namespace' correct si vous utilisez xhtml.la source