0
の交換/フェージング私は1つののdiv(または何でも)にSVGファイルをロードしたいと私も成功しhereそれを行うことができます。D3。 SVGファイルをロードし、一度に1つだけを表示します。問題
var div_svg = d3.select("div#example");
svg1 = "https://upload.wikimedia.org/wikipedia/commons/0/02/SVG_logo.svg";
svg2 = "https://upload.wikimedia.org/wikipedia/commons/8/81/Wikimedia-logo.svg";
var createSvg = function(dataset) {
d3.xml(dataset)
.mimeType("image/svg+xml")
.get(function(error, xml) {
if (error) throw error;
div_svg.node().append(xml.documentElement);
});
}
update = function(dataset) {
div_svg.select('svg')
.style("opacity", 1)
.transition()
.duration(200)
.style("opacity", 0)
.remove();
createSvg(dataset)
}
createSvg(svg1);
d3.select("#one").on("click", function() { update(svg1); });
d3.select("#two").on("click", function() { update(svg2); });
しかし、私はいくつかの問題があります。
-
を
もう一度svgファイルを選択しようとすると、最初のファイルは消えてしまいますが、もう1つは前に消えるまで下に積み重なります。どのように私は他のスムーズに1つのSVGを置き換えることができますか?
私はsvg "ボタン"をすばやくクリックすると、複数のグラフがdivに表示されます。 SVGがすでにレンダリングされているかどうかを確認するだけで汚れた修正を行うことができましたが、この非同期アップデートの問題をより良い方法で修正する方法を理解したいと思います。
は私がどうなるのかそうあなた