以下のような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 の子です。
各ノードには非アクティブ化のリンクがあります。非アクティブ化をクリックすると、2 つのリンクがアクティブになり、作成が削除されます。画像に記載されています。
親ノードのすべての子ノードに同じアクティブおよび削除リンクを作成したい。たとえば、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)
}
}
}