Я пытаюсь преобразовать этот код jquery в ванильный javascript. На самом деле этот код строит вложенный ul
li
на лету с этими данными json. Может ли кто-нибудь помочь мне с этим?
var tree = [
{
name: 'Vegetables',
children: [
{
name: 'Green',
children: [
{
name: 'Broccoli',
children: [{ name: 'Broccoli-sub1' }, { name: 'Broccoli-sub2' }],
},
{ name: 'cabbage' },
{ name: 'Brussels' },
],
},
{
name: 'Orange',
children: [{ name: 'Pumpkins' }, { name: 'Carrots' }],
},
],
},
];
function recursive_tree(data, tag, child_wrapper, level) {
var html = [];
//return html array;
level = level || 0;
child_wrapper = child_wrapper != false ? child_wrapper : 'ul';
$.each(data, function (i, obj) {
var el = $('<' + tag + '>');
el.html(obj.name);
if (obj.hasOwnProperty('children')) {
var wrapper = $('<' + child_wrapper + '>');
var els = recursive_tree(obj.children, tag, child_wrapper);
wrapper.append(els);
wrapper.appendTo(el);
}
html.push(el);
});
return html;
}
var html = recursive_tree(tree, 'li', 'ul');
console.info(html);
$('#parent').append(html);
`enter code here`;
Есть много способов сделать это. Вот способ сгенерировать внутренний html
var tree = [{
"name": 'Vegetables',
"children": [{
"name": 'Green',
"children": [{
"name": 'Broccoli',
"children": [{
"name": "Broccoli-sub1"
},
{
"name": "Broccoli-sub2"
}
]
},
{
"name": "cabbage"
},
{
"name": 'Brussels'
},
]
},
{
"name": 'Orange',
"children": [{
"name": 'Pumpkins'
},
{
"name": 'Carrots'
},
]
},
]
}]
function recursive_tree(data, tag, child_wrapper, level) {
let html = [];
//return html array;
level = level || 0;
child_wrapper = !child_wrapper ? child_wrapper : 'ul';
data.forEach(obj => {
html.push(`<${tag}>${obj.name}`);
if (obj.hasOwnProperty('children')) {
html.push(`<${child_wrapper}>`);
html = html.concat(recursive_tree(obj.children, tag, child_wrapper))
html.push(`</${child_wrapper}>`);
}
html.push(`</${tag}>`);
});
return html;
}
var html = recursive_tree(tree, 'li', 'ul');
console.info(html);
const parent = document.getElementById('parent');
parent.innerHTML += html.join("");
<div id = "parent"></div>
Я очень благодарен вам, я только начал изучать javascript, На самом деле, весь день я пытался это сделать. Наконец-то вы сделали это простым, чтобы сделать мое древовидное представление. Большое спасибо.
Большое спасибо, сэр. Это действительно решило мою проблему. ты действительно великолепен.