鼠标悬停在js中抛出未定义的错误

时间:2014-11-26 11:17:34

标签: javascript svg d3.js

在以下代码段中,当我尝试为svg添加mouseover功能时,它会抛出Uncaught TypeError: undefined is not a function on mouseover

svg.selectAll(".bar1")
    .data(clensedData)
    .transition()
    .delay(function (d, i) {
      return i / clensedData.length * 10;
    })
    .duration(500)
    .attr("class", "bar1")
    .attr("x", function (d) {
      return x(d.City)
    })
    .attr("width", x.rangeBand())
    .attr("y", function (d) {
      return y(d.Cases);
    })
    .attr("height", function (d) {
      return height - y(d.Cases);
    })
    .attr("fill", function (d, i) {

      if (d.diff == max_of_array)
        return "green";

      if (d.diff == min_arr)
        return "red";
      else
        return "orange";
    })              
    .on("mouseover", function () {
});

有什么想法吗? ps:js的新手

3 个答案:

答案 0 :(得分:1)

解释为什么移动点击处理程序修复了您的问题是在您没有在D3选择上调用.on('click', function(){})之前,而是在D3 过渡之前.transition()是返回。

我猜你在transition()电话之前移动了它。在大多数情况下,通常的模式是将transition()duration()及其attr()作为函数链的最后一部分。

答案 1 :(得分:0)

在您的代码")"不见了。检查代码的最后一行

答案 2 :(得分:0)

我不得不添加onclick我创建的svg而不是我追加它的地方..它解决了我的问题。