전 세계지도에서 마우스를 누른 상태에서 클릭하는 국가의 색을 녹색에서 빨간색으로 변경하려고합니다. 여러 번의 클릭으로 색상을 변경할 수 있지만 while 루프를 추가하려고하면 화면이 얼어 붙습니다. 나 좀 도와 줄 수있어? 또한 어떻게 색상을 녹색에서 빨간색으로 반복 할 수 있습니까? 이 색 빨간색에 도달하고 내가 마우스를 아래로 질주 유지하면 의미는 그래서 항상 전에 당신이 조건 변수 권리를 설정 루프를 사용하고 Heres a fiddle for itonmousedown javacript
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;
});
}
});
(주 또한 기능의 상단에 몇 가지 변수를 추가). 'ismousedown'을 1로 설정하면 항상 1로 유지되므로 무한 루프가 발생하고 정지됩니다. – skyline3000
나는 mouseup 함수가 ismousedown을 0으로 만들고 강제로 루프 밖으로 빠져 나갈 것이라고 생각했습니다. 나는 이것에 아주 새롭다! –