Может ли кто-нибудь помочь мне создать следующий JSON в следующем HTML?Javascript Recursion JSON в HTML
Мне так плохо в рекурсии, что это даже не смешно. Я не могу найти что-либо на SO, чтобы помочь мне, как мне нужно, вы увидите мой jsFiddle как я!
Я пытаюсь превратить это:
var data = [
{
"node_id":1,
"children":[]
},
{
"node_id":2,
"children":[]
},
{
"node_id":3,
"children":[
{
"node_id":4,
"children":[]
},
{
"node_id":5,
"children":[
{
"node_id":6,
"children":[]
},
{
"node_id":7,
"children":[]
}
]
}
]
}
];
В это:
<ul>
<li>1
<ul>
<li>2
<ul>
<li>3
<ul>
<li>4</li>
<li>5
<ul>
<li>6</li>
<li>7</li>
</ul>
</li>
</ul>
</li>
</ul>
</ul>
</li>
</ul>
Это моя лучшая попытка (See My jsFiddle) после запуска через некоторые SO вопросы. Я так смущен рекурсией:
Обновление: Я приближаюсь, но это так сложно. Похоже, если бы я сделал document.createElement и добавленные дети, он мог бы работать лучше?
function recursion(data, is_child, first_call) {
if (is_child != true) {
var output = '<ul id="org">\n';
}
else if (is_child == true && first_call == true) {
var output = '<ul>\n';
}
var len = data.length;
for (var i = 0; i < len; i++)
{
if (is_child == true && first_call == true) {
output += '<li>'+ data[i].node_id +'</li>\n';
} else {
output += '<li>'+ data[i].node_id +'\n';
}
if (data[i].children.length > 0) {
if (is_child == true && first_call != true) {
first_call = true
} else {
first_call = false
}
output += recursion(data[i].children, true, first_call);
}
else {
if (is_child == true && first_call != true) {
output += '</li>';
}
if (typeof data[i+1] != 'undefined') {
output += '<ul>\n';
} else {
// Close all the items that are not closed
for (var j = 0; j < i; j++) {
output += '</li></ul>\n'
}
output += '</li>\n'
}
}
}
output += '</ul>\n';
return output;
}
Update: Thee путь узел обрабатывается, если она имеет детей, кажется, есть другое поведение. У меня есть это изображение, чтобы показать вам, что он правильно отображает этот плагин. jOrgChart:
Вы уверены, что html, который вы вставили выше, является вашим выводом? Мне кажется, что у узлов 1 и 2 не должно быть детей –
Не думаю. Я пытаюсь подключить это в этот плагин jQuery Flowchart «jOrgChart», пример @ http://dl.dropboxusercontent.com/u/4151695/html/jOrgChart/example/example.html - и вы можете увидеть источник, который они элементы гнезда действительно смешные. – JREAM
Я согласен с @JustinBicknell, в вашем примере вывода вы обрабатываете узлы 2 и 3 по-другому, чем узлы 4 и 5. Обе пары являются братьями и сестрами в вашем JSON, но у вас есть первый родитель/ребенок в вашем примере HTML. – SlightlyCuban