我正在製作世界地圖,並試圖從綠色變爲紅色,同時按住鼠標點擊的國家的顏色。 我可以通過多次點擊改變顏色,但是當我嘗試添加while循環時,它只是凍結。你能幫我嗎?我怎樣才能保持從綠色到紅色的顏色循環?這意味着一旦達到紅色,我不斷向下打孔鼠標,它將變爲綠色等.. Heres a fiddle for it雖然onmousedown javascript
var color = d3.scale.linear().domain([0, 50]).range(["green", "red"]);
var pas = [];
var ismousedown = -1;
country
.on("mousemove", function(d, i) {
var mouse = d3.mouse(svg.node()).map(function(d) {
return parseInt(d);
});
tooltip.classed("hidden", false)
.attr("style", "left:" + (mouse[0] + offsetL) + "px;top:" + (mouse[1] + offsetT) + "px")
.html(d.properties.name);
})
.on("mouseout", function(d, i) {
tooltip.classed("hidden", true);
})
.on("mouseup", function(d, i) {
ismousedown = 0;
})
.on("mouseout", function(d, i) {
tooltip.classed("hidden", true);
})
.on("mousedown", function(d, i) {
ismousedown = 1;
while (ismousedown == 1) {
if (pas[d.id]) {
pas[d.id]++;
} else {
pas[d.id] = 1;
}
d3.select(this)
.classed("active", false)
.style("fill", function(d, i) {
return color(pas[d.id]);
return d.properties.color;
});
}
});
你在你的'while'循環沒有退出條件。您將'ismousedown'設置爲1,然後它始終保持爲1,這會導致無限循環(並凍結)。 – skyline3000
我認爲mouseup函數會使ismousedown等於0並強制退出循環。我很新! –