Javascript 更改选定节点样式,d3.js拖放可折叠树
我已经成功构建了d3.js可折叠拖放树,我想再添加一个限制将节点拖放到某些选定节点的功能。我也完成了此功能,如果选定节点受到限制,我想更改其样式/类别Javascript 更改选定节点样式,d3.js拖放可折叠树,javascript,d3.js,Javascript,D3.js,我已经成功构建了d3.js可折叠拖放树,我想再添加一个限制将节点拖放到某些选定节点的功能。我也完成了此功能,如果选定节点受到限制,我想更改其样式/类别 if (selectedNode) { if ((selectedNode.id != 5) || (draggingNode.id != 1)) { // now remove the element from the parent, and insert it into
if (selectedNode) {
if ((selectedNode.id != 5) || (draggingNode.id != 1)) {
// now remove the element from the parent, and insert it into the new elements children
var index = draggingNode.parent.children.indexOf(draggingNode);
if (index > -1) {
draggingNode.parent.children.splice(index, 1);
}
if (typeof selectedNode.children !== 'undefined' || typeof selectedNode._children !== 'undefined') {
if (typeof selectedNode.children !== 'undefined') {
selectedNode.children.push(draggingNode);
} else {
selectedNode._children.push(draggingNode);
}
} else {
selectedNode.children = [];
selectedNode.children.push(draggingNode);
}
// Make sure that the node being added to is expanded so user can see added node is correctly moved
expand(selectedNode);
sortTree();
endDrag();
}
else { var k= d3.select(selectedNode); return; endDrag(); }
} else {
endDrag();
}
我在上面的函数中做了更改,但如果所选节点的移动无效,我想更改其样式。请建议我如何更改上面部分中圆圈的样式您正在使用的示例仅引用选定节点的数据,而不是DOM元素。这使得访问节点以在其上设置样式变得稍微棘手,但您可以使用D3的数据匹配机制来实现这一点:
var node = svgGroup.selectAll("g.node").data([selectedNode], function(d) { return d.id; });
node.style(...);
selectedNode.style(…)
?您好,感谢您的快速响应。。selectedNode.style不工作获取错误:“对象#没有方法‘style’”。请向我们显示完整的代码,特别是您发布的片段出现的上下文。selectedNode.style(“填充不透明”,0);并选择Node.style(“填充”、“蓝色”);有关问题中的代码,请。特别是,什么是selectedNode
?