gpt4 book ai didi

javascript - D3.js,需要d3.js中的点击事件

转载 作者:可可西里 更新时间:2023-11-01 02:53:43 26 4
gpt4 key购买 nike

我正在尝试制作一个气泡图,如果我点击一个气泡,气泡的标题应该出现在控制台中。我尝试了一些方法,但没有成功。

d3.json("deaths.json",
function (jsondata) {

var deaths = jsondata.map(function(d) { return d.deaths; });
var infections = jsondata.map(function(d) { return d.infections; });
var country = jsondata.map(function(d) { return d.country; });
var death_rate = jsondata.map(function(d) { return d.death_rate; });

console.log(deaths);
console.log(death_rate);
console.log(infections);
console.log(country);
console.log(date);

//Making chart

for (var i=0;i<11;i++)
{
var f;
var countryname=new Array();
var dot = new Array();
dot = svg.append("g").append("circle").attr("class", "dot").attr("id",i)
.style("fill", function(d) { return colorScale(death_rate[i]); }).call(position);

//adding mouse listeners....

dot.on("click", click());
function click()
{
/***********************/
console.log(country); //i need the title of the circle to be printed
/*******************/
}

function position(dot)
{
dot .attr("cx", function(d) { return xScale(deaths[i]); })
.attr("cy", function(d) { return yScale(death_rate[i]); })
.attr("r", function(d) { return radiusScale(infections[i]); });
dot.append("title").text(country[i]);
}
}
});

我需要打印圆圈的标题请帮忙!!!

最佳答案

通过使用 on("click", ...) 函数,您有了一个好主意。但是我看到两件事:

  • 第一个问题是您没有调用点击事件的函数,而是调用它的值。因此,您编写 dot.on("click", click()); 而不是 dot.on("click", click);。为了理解差异,让我们假设函数 click 需要一个参数,例如代表有趣的点,它会是什么?好吧,你会写以下内容:

    dot.on("click", function(d){click(d)}) 

    这等同于(并且更不容易出错)写作:

    dot.on("click", click)
  • 现在,第二点是,您确实希望将节点作为函数 click 的参数传递。幸运的是,对于 on 事件,正如我在我的示例中所使用的,函数 click 被调用时带有参数 d,它表示 dot 的数据.因此你现在可以写:

    dot.on("click", click);
    function click(d)
    {
    console.log(d.title); //considering dot has a title attribute
    }

    注意:您还可以通过编写 function click(d,i) 来使用另一个参数,其中 i 表示数组中的索引,请参阅 documentation了解更多详情。

关于javascript - D3.js,需要d3.js中的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15515215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com