我在javascript中有一个变量,如下所示:
var treeNode = [{
"id": "T1"
}, {
"id": "T2",
"children": [{
"id": "T3"
}, {
"id": "T4"
}, {
"id": "T5",
"children": [{
"id": "T6"
}, {
"id": "T7"
}, {
"id": "T8"
}
]
}, {
"id": "T9"
}, {
"id": "T10"
}
]
}, {
"id": "T11"
}, {
"id": "T12"
}
];
节点 t3,t4,t5,t6,t7,t8,t9,t10 是节点 t2 的子节点。
每个节点都有一个 deactivate 的链接。当点击 deactivate 两个活动的链接并删除 create。在图片中提到:
我想在父节点的所有子节点上创建相同的活动和删除链接。例如,如果我单击 T5 的停用链接,那么活动和删除链接也将显示在 T6、T7、T8 上,如果我单击 T2 的停用链接然后激活和删除链接将显示在 T3、T4、T5、T6、T7、T8、T9、T10 上
我尝试了以下递归代码。但我认为这不是正确的方法。请建议。
var objTreeNode = eval(treeNode);
trav(objTreeNode);
function trav(TreeNodeObj){
var i=0;
for (i=0;i<TreeNodeObj.length;i++){
if(!TreeNodeObj[i].children){
if(objID==TreeNodeObj[i].id(){ //if click on T2 then get T2 as objID
document.getElementById('span_'+objID).innerHTML = '<a href="javascript:activate(\'' + objID + '\');">Activate</a> <a href="javascript:deleteNode(\'' + objID
Delete</a>';
}
}
else{
childObj = TreeNodeObj[i].children;
trav(objTreeNode)
}
}
}