未捕获的TypeError:n.apply不是函数 - 可能是什么问题?

时间:2015-11-08 10:15:08

标签: javascript d3.js

尝试在d3树布局中访问节点的父节点,我的代码看起来像这样

这个函数应该显示它接受的父名称作为参数

function draw(a){
  console.log(a);

  }

以下是在节点的mouseover事件中调用它的函数,请参见最后一行

node.append("circle")
    .attr("class", function (d) {
        var value; 
        if(d.depth == 1){value = "marker";}
        else{value = "else";}
        return value;}
    )
    .attr("r", function(d){return d.depth == 1?d.children.length:3})
    .style("fill", function (d) {
        return d.depth>1?colors(d.parent.name):colors(d.name);})
    .style("stroke", "none")
   .on("mouseover", "draw(function(d){return d.parent.name;})");

但是我得到了上面的错误。任何人?

2 个答案:

答案 0 :(得分:3)

您的"mouseover"处理程序看起来很像问题。您正在传递一个字符串而不是一个函数,该函数仅在onmouseover DOM元素属性中起作用(即使是混乱的行为也是不好的做法)。尝试改为

on("mouseover", function (d) {
    draw(d.parent.name);
});

答案 1 :(得分:0)

你会想做这样的事情:

.on("mouseover", function(d) {
    draw(d.parent.name);
});