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

Javascript 未捕获的TypeError:n.apply不是一个函数-可能是什么问题?,javascript,d3.js,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

尝试访问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;})");

然而,我得到了上面的错误。有人吗?

你会想做这样的事情:

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

您的
“mouseover”
处理程序似乎有问题。您传递的是一个字符串而不是一个函数,该函数只在
onmouseover
DOM元素属性中起作用(即使在那里,混淆行为也是不好的做法)。试试看

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

引用
.on(“mouseover”,“draw(函数(d){return d.parent.name;})”???我不明白为什么要在绘图中编写函数(函数(d){return d.parent.name;})有什么好的理由吗…对不起,我不知道你的意思。到目前为止,在d3中,我是如何访问当前元素的,请看第一个括号,在这里我设置了circle类attribute我认为
d
是作为参数传递给
“mouseover”
处理程序的数据,而不是globalThis works实际上已经尝试过了这一点,但我现在意识到在调用draw之后我并没有终止这条线