我是新來的D3.js和tutorial。風格和attr在D3.js
我很困惑爲什麼circle.style(「fill」,「steelblue」);下面的不生效;但如果將樣式行放在circle.enter()。append(「circle」)行後面,它可以將顏色填充到所有圓圈。據我瞭解,風格是全球性的,應該適用於所有的圈子,或者至少在以下代碼中影響html中現有的圈子。
//js
var svg = d3.select("svg");
var circle = svg.selectAll("circle").data([32, 57, 112, 293], function(d) { return d; });
circle.style("fill", "steelblue");
circle.enter().append("circle")
.attr("cy", 60)
.attr("cx", function(d, i) { return i * 100 + 30; })
.attr("r", function(d) { return Math.sqrt(d); });
circle.exit().remove();
//html
<svg width="720" height="120">
<circle cx="40" cy="60" r="10"></circle>
<circle cx="80" cy="60" r="10"></circle>
<circle cx="120" cy="60" r="10"></circle>
</svg>
謝謝!
我明白了,謝謝!附加問題請注意:在調試時,我注意到在輸入選擇後,它畫了另外四個圓圈,而前三個圓圈仍然存在,然後刪除方法刪除了前三個圓圈。所以使用selectAll()。data(),它實際上是用佔位符重新繪製圓形,而不是編輯現有的選定圓圈?是對的嗎? – omic
是的,這是正確的:我更新了答案,以更好地解釋... –
@omic我進一步擴大了......我認爲我現在完成了。 –