【发布时间】:2014-11-20 15:19:50
【问题描述】:
这是我的css
.node.selectedNode {
width:50px;
height:50px;
stroke-width: 3px;
stroke: #f00;
}
.node.unselectedNode {
width:35px;
height:35px;
stroke-width: 3px;
stroke: #000;
}
我想点击一个节点使其被选中(给它选定的属性),再次单击并使其未选中。 这是一段代码,我在其中检查节点的 id 是否在数组中,如果不是,则添加它,使我能够轻松打印出选定的节点。
if(selectedNodesArray.indexOf(d.coreId)==-1){
selectedNodesArray.push(d.coreId);
d.selectedNode = true; //change style
d.unselectedNode = false;
d3.select(this).classed("selectedNode", true);
console.log("clicked");
}else{
selectedNodesArray.pop(d.coreId);
d.unselectedNode = true;
d.selectedNode = false;
d3.select(this).classed("unselectedNode", true);
console.log("pulled");
}
您可能会注意到我尝试更改样式。现在这工作了两次;当我选择它和取消选择它时。之后它不再工作了。有什么想法吗?
另外,我创建了一个按钮,以便清除所有突出显示的节点。就像我在这里一样,当我单击节点时,它会将其属性更改为固定
function dragstart(d) {
d.fixed = true;
d3.select(this).classed("fixed", true);
我想在单击按钮时执行此操作,因此它会更改节点的 css 属性。我不知道如何挑选出所有节点并赋予它们所有相同的 css 属性,而不是通过 D3 来完成并以这种方式更改 .style。
抱歉,这篇文章冗长,我只想为您提供尽可能多的细节,以便大家更轻松。
【问题讨论】:
标签: javascript html css node.js d3.js