d3.mouse(this)抛出TypeError:t为null

时间:2015-01-21 10:34:48

标签: javascript d3.js

尝试将线鼠标添加到我的d3条形图表上。但是在代码的底部,d3.mouse(this)抛出类型错误。

有什么想法吗?

这是我的代码

  svg.append("rect")
    .attr("class", "overlay")
    .attr("width", width)
    .attr("height", height)
    .on("mouseover", function() {
        focus.style("display", null);
    })
    .on("mouseout", function(d) {
        div.transition()
            .duration(50)
            .style("opacity", 1e-6);
    })
    .on("mousemove", function(){
    //move focus around
        console.log(d3.mouse(this));
        var x0 = x.invert(d3.mouse(this)[0]);
        var i  = bisectDate(data, x0, 1);

        var d0 = data[i - 1];
        var d1 = data[i];
        var d = x0 - d0.date > d1.date - x0 ? d1 : d0;
    return;
    focus.attr("transform", "translate(" + x(d.date) + "," + y(d.accidents) + ")");
    div.transition()
        .duration(50)
        .style("opacity", .9);
      div.html("<h4>Company Name : <strong>"+ company_name +"</strong><br/> Date : <strong>"+ formatTime(d.date) +"</strong><br/>"+ bar_text +" : <strong>" + d.deaths + "<br/></strong>"+ line_text +" : <strong>"+ d.accidents +"</strong></h4>")
            .style("left","39%")
            .style("top", "160px");
});

1 个答案:

答案 0 :(得分:0)

我认为必须将onmouse动作调用到由d3选择的元素上。我无法在小提琴中使用你的代码,但我没有得到鼠标错误。

var svg = d3.select('body').append('svg:svg')
 .attr('fill', 'blue');

 svg.append("rect")
    .attr("class", "overlay")
    .attr("width", 333)
    .attr("height", 333)
    .on("mouseover", function() {
        focus.style("display", null);
    })

http://jsfiddle.net/fek9ddg5/309/