У меня есть скрипка here.Функция генератора рекурсивного списка в javascript
Следующий код генерирует список HTML от объекта
function generateList(data, $e) {
// create an inner item
function createInner(obj) {
var li = $('<li>');
li.text(obj.text);
if (obj.children != undefined && obj.children.length > 0) {
innerList = $('<ul>');
for (var i = 0; i < obj.children.length; i++) {
var child = obj.children[i];
innerList.append(createInner(child));
};
li.append(innerList);
}
return li;
}
for (var i = 0; i < data.length; i++) {
$e.append(createInner(data[i]));
}
}
Следующий набор данных был использован в качестве примера -
[
{
"text": "item1"
},
{
"text": "item2",
"children": [
{
"text": "subItem",
},
{
"text": "another subItem",
},
{
"text": "last subItem",
}
],
},
{
"text": "item3",
"children": [
{
"text": "Hello",
},
{
"text": "Inner List",
"children": [
{
"text": "innerItem1",
},
{
"text": "innerItem2",
}
]
},
{
"text": "Bye",
}
],
}
]
Элемент списка, который элемент3 написан должен иметь внутренний список содержащий еще двух детей, но этого не происходит. Элемент, помеченный как Inner List
, не отображается на выходе html. Также не обозначен пункт Hello
. item3
содержит только innerItem1
, innerItem2
и Bye
.
Как я могу это преодолеть?
Пожалуйста, напишите соответствующий код ** в ** вопрос. –
добавили его в вопрос –
Ваша рекурсивная функция должна принимать два параметра. Узел данных для добавления * и * родительского элемента для добавления результата в. Затем они будут работать параллельно любой глубине. –