我想知道如何解決D3.js中的這個問題。下面的代碼每5秒進入,更新或退出,並顯示或消失數組dataset
中的隨機數name
元素。該數組還包含id
元素。現在,我想點擊屏幕上出現的更新元素,例如"foo"
,並且想要它的id
(表示1)在我單擊"foo"
元素後顯示。這個函數的名字叫testfunction
,但我認爲這個函數有些不對。問題在於,原始name
文本在點擊之後全部消失,並且出現新的id
文本。但我希望他們在使用click
函數之後都能在屏幕上希望你們中的一些人能夠提供幫助。由於與更新/輸入元素的互動
var svg = d3.select("body").append("svg");
var dataset = [{
name: "foo", id: "1"
}, {
name: "bar", id: "2"
}, {
name: "baz", id: "3"
}, ];
print(dataset);
setInterval(() => {
var data = dataset.slice(Math.random() * 6);
print(data);
}, 7000);
function print(data) {
var texts = svg.selectAll(".texts")
.data(data);
textsExit = texts.exit().remove();
textsEnter = texts.enter()
.append("text")
.attr("class", "texts");
textsUpdate = texts.merge(textsEnter)
.attr("x", 10)
.attr("y", (d, i) => 20 + i * 16)
.text((d,i) => "TextNumber" + (i+1) + ", name: " + d.name)
.on("click", testfunction);
function testfunction(){
textsUpdate
.attr("x", 200)
.attr("y", function(d, i) { return (490 + i * 28)})
.text(function(d, i) { return "IDNumber" + (i+1) + ", Name: "+ d.id})
};
}
只是目測的話,我會懷疑這條線應該是'。對( 「點擊」,testfunction);'但我沒有保證 – lucas
你是def。正確的。我剛剛編輯了代碼和說明,因爲仍然存在問題。非常感謝,盧卡斯! –