0
我的代碼有效,它顯示我的數據元素,但是在更改我的數據並再次運行相同的代碼後,d3不更新我的SVG元素的文本。我必須刷新整個網站才能更改。不會更新.each函數中的d3.js元素
var blackbox= d3.select("#content")
.selectAll(".silencer")
.data([0]);
blackbox.enter()
.append("div")
.attr("class", "silencer")
.attr("id", "silencer");
blackbox.exit().remove();
var box = blackbox.selectAll(".ursa")
.data(fraung);
box.enter()
.append("div")
.attr("class", "ursa")
.each(function(d) {
d3.select(this)
.append("svg")
.attr("class", "invoker")
.each(function(d) {
d3.select(this).append("svg:image")
.attr("xlink:href", "images/qwer.png")
.attr("x", "0")
.attr("y", "0")
.attr("width", "100")
.attr("height", "100")
.append("title")
.text(function(d) {return (d.name)});
});
d3.select(this).append("div")
.attr("class", "chen")
.each(function(d) {
d3.select(this).append("table")
.attr("class", "tab")
.each(function(d) {
d3.select(this).append("tbody")
.each(function(d) {
d3.select(this).append("tr")
.text(function(d) {return("Name: ")})
.attr("class", "key")
.each(function(d) {
d3.select(this).append("td")
.text(function(d) {return (d.name)});
});
});
});
});
});
box.exit().remove();
這可能會工作,但我不想刪除,再而創建。必須有另一種方式。 –
如果您再次運行相同的代碼,它將執行所有的代碼,而不僅僅是控制文本元素的部分,我猜這是現在發生的事情,因此您描述的問題。如果您只想更改文本,則可以檢查是否已經存在內容,然後選擇已存在的文本並進行更改,而不是運行您發佈的所有代碼塊。 – James