我有一个如下的 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 的子节点,我在每个节点上都有一个停用链接。单击停用链接使链接处于活动状态并删除链接。在图片中提到。
现在我想在父节点的所有子节点上进行相同的活动并删除链接。例如 T3,T4,T5,T6,T7,T8,T9,T10 是 T2 的孩子。如果我点击 T5,那么这将适用于 T6、T7、T8。
我尝试了下面的递归代码。可能是我的方法不对。请指教。
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){ // will get T2 if click on deactivate link of Item T2
document.getElementById('span_'+TreeNodeObj[i].id).innerHTML = '<a href="javascript:activate(\'' + objID + '\');">Activate</a> <a href="javascript:deleteNode(\'' + objID
+'\');">Delete</a>';
}
}
else{
childObj = TreeNodeObj[i].children;
trav(childObj)
}
}
}