我想在鼠标悬停时标记节点的子节点。为此,我首先在输入时为所有节点创建了一个文本属性。然后我为mouseover事件定义了一个淡入淡出函数。 我在o.select(“text”)行中选择节点o的text属性时遇到了困难。我得到一个错误o.select不是一个函数。我该怎么做呢?
function fade(opacity) {
return function(d) {
if (d.group == 5){
sourceNeighbors[d.index].sort(compare);
link.style("stroke-opacity", function(o) {
if (o.source === d || o.target === d) {
return opacity;
}
else if (isConnected(o.source,d) && isConnected(o.target, d)) {
return 1;
}
return opacity;
});
node.style("stroke-opacity", function(o) {
if ((d.name != o.name) && isConnected(d, o)) {
if (opacity == 1) {
o.select(text)
.text("");
}
else {
var num = findIndex(d.index, o.index);
o.select(text)
.text(num.toString());
}
}
thisOpacity = isConnected(d, o) ? 1 : opacity;
this.setAttribute('fill-opacity', thisOpacity);
return thisOpacity;
});
}
};
}
更新:我将行更改为d3.select(o).text(“”); 这里也是plunkr,d3.js代码在script.js中。 这也是我在mouseover上看到的,红色节点缺少文本。