Javascript 更改选定节点样式,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

我已经成功构建了d3.js可折叠拖放树,我想再添加一个限制将节点拖放到某些选定节点的功能。我也完成了此功能,如果选定节点受到限制,我想更改其样式/类别

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