Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3。如何对选定节点和所有父节点执行操作_Javascript_D3.js - Fatal编程技术网

Javascript D3。如何对选定节点和所有父节点执行操作

Javascript D3。如何对选定节点和所有父节点执行操作,javascript,d3.js,Javascript,D3.js,我有一个D3树形图链接这一个。。。并且可以选择一个节点进行微调。我希望能够在父节点上进行迭代,并设置一个属性,例如d.MainBranch=“Yes”。 我的想法是我可以右键点击,得到一个菜单弹出,然后点击“标记为主要分支”。我已经做了右键点击得到一个弹出菜单。并且可以像这样在当前节点上设置d.MainBranch=“Yes” function marAsMainBranch(d) { d.mainBranch="Yes"; update(d); } 只

我有一个D3树形图链接这一个。。。并且可以选择一个节点进行微调。我希望能够在父节点上进行迭代,并设置一个属性,例如
d.MainBranch=“Yes”
。 我的想法是我可以右键点击,得到一个菜单弹出,然后点击“标记为主要分支”。我已经做了右键点击得到一个弹出菜单。并且可以像这样在当前节点上设置
d.MainBranch=“Yes”

function marAsMainBranch(d) {           
    d.mainBranch="Yes"; 
    update(d);
}
只是缺少遍历父对象的能力:-(


有人能帮忙吗?

您可以这样做来设置父数据并递归调用,直到没有父节点为止(从所操作的节点开始):

然后在中单击或右键单击操作调用
setInfoParent
类似以下内容:

function click(d) {
  setInfoParent(d);//call to set all parents.
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
  update(d);
}

Working fiddle

您可以这样做来设置父数据并递归调用,直到没有父数据为止(从操作的节点开始):

然后在中单击或右键单击操作调用
setInfoParent
类似以下内容:

function click(d) {
  setInfoParent(d);//call to set all parents.
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
  update(d);
}
fiddle工作

问题是数据()有子引用,没有父引用。我认为最好从树的顶部开始,递归地向下迭代,直到找到已单击的节点,然后在备份过程中标记所有父引用。问题是数据()有子引用,没有父引用。我认为最好从树的顶部开始,递归地向下迭代,直到找到已单击的节点,然后在备份过程中标记所有父引用。