Javascript 将OnClick事件添加到条形图

Javascript 将OnClick事件添加到条形图,javascript,d3.js,Javascript,D3.js,这是我所有的代码,单击“”部分的”有点问题,我想不出来。 它会出错并显示“未定义钻取” 这不是我们在D3部分中绘制的条形图之一的点击事件上调用方法的方式吗 $( document ).ready(function() { gon.data.pop(); // get rid of query_time element. var dataset = gon.data; function drill(d, i) { console.log(d.total_

这是我所有的代码,单击“”部分的
”有点问题,我想不出来。
它会出错并显示“未定义钻取”
这不是我们在D3部分中绘制的条形图之一的点击事件上调用方法的方式吗

$( document ).ready(function() {

    gon.data.pop(); // get rid of query_time element.
    var dataset = gon.data;

    function drill(d, i) {
        console.log(d.total_count); //data object
        var url = "http://localhost:4567/drill/" + d.brand_name + "/" + d.generic_name;
        window.location.href = url;
    }

    d3.select("body").selectAll("div")
        .data(dataset)
        .enter()
        .append("div")
        .attr("class", "bar")
        .attr("onclick", "drill()")
        .style("height", function(d) {
            return d.brand_name + "px";
        });
});

要将事件侦听器添加到选择中,应使用选择的方法

你可以写

d3.select("body").selectAll("div")
    .data(dataset)
    .enter()
    .append("div")
    .attr("class", "bar")
    .on("click", drill)
    .style("height", function(d) {
        return d.brand_name + "px";
    });

drill
函数的声明移动到文档就绪处理程序的外部


更好的方法是使用d3提供的
on
方法,而不是
onclick
属性

您也可以使用jQuery.click(),如果您愿意,下面是一个示例

$("#test").click(function(){
     sayHello();   
});
请点击此处:

谢谢你的建议。现在将尝试。已修复:)我在控制台中获取此消息有什么原因吗?图表现在画得很好,但在控制台中总是会出现这样的错误:“uncaughtreferenceerror:$isnotdefinedmyfile.js:1(匿名函数)”您应该在一个新问题中问这个问题。似乎jQuery不可用时出现问题。谢谢,已修复:)我在控制台中获取此信息有什么原因吗?图表现在画得很好,但总是在控制台中出现此错误:“uncaughtreferenceerror:$未定义myfile.js:1(匿名函数)”您的
jquery引用是否放在myfile.js引用之前?已修复:)我在控制台中出现此错误有什么原因吗?图表现在画得很好,但在控制台中总是会出现这样的错误:“uncaughtreferenceerror:$未定义myfile.js:1(匿名函数)”请确保在html文件的