私はD3で木を扱っていますが、これまでのところとても楽しかったです。ユーザーが内側のノード(円)をクリックした場合、
- すべての葉の名前のリストを提供する
- そのノードから葉につながるすべてのパスに色を付けます。
これが私がその目的のために書いたいくつかのコードです
var circles = nodeEnter.append("svg:circle")
.attr("r", function(d){ return d.children ? 5 : 0; })
.on("click", get_all_children);
function get_all_children(d){
var all_children = get_all_childs(d);
console.log("end, our array has: "+all_children.length+" elements");
all_children.forEach(function(elem){
console.log(elem.name);
});
}
function get_all_childs(d, all_childs){
var all_children = new Array;
all_children.push(all_childs);
if(d.children){
var children = d.children;
for (var i = 0; i < children.length; i++) {
var temp_array = get_all_childs(children[i], all_children);
console.log("got from recursion: : "+temp_array.length+" children");
all_children.push(temp_array);
}
}
else{
//return all_children;
//console.log("end, our array has: "+all_children.length+" elements");
}
return all_children;
}
再帰が正しく機能していないようです。それを手伝ってくれませんか。