在示例中,我将json
测试与我拥有的代码一起放置。
我只生成li
但我找不到生成的方法ul
。
var arrayjson = [
{
"id": 5,
"nombre": "Electrica",
"id_padre": 0,
"status": true,
"array": [
{
"id": 16,
"nombre": "Termico",
"id_padre": 5,
"status": true
},
{
"id": 15,
"nombre": "Relé",
"id_padre": 5,
"status": true
},
{
"id": 14,
"nombre": "Contactores",
"id_padre": 5,
"status": true
}
]
},
{
"id": 6,
"nombre": "Mecanica",
"id_padre": 0,
"status": true,
"array": [
{
"id": 8,
"nombre": "Motores",
"id_padre": 6,
"status": true
}
]
},
{
"id": 7,
"nombre": "Sellos",
"id_padre": 0,
"status": true
},
{
"id": 9,
"nombre": "Filtro",
"id_padre": 0,
"status": true,
"array": [
{
"id": 10,
"nombre": "Filtro 0,22 U",
"id_padre": 9,
"status": true
},
{
"id": 11,
"nombre": "Filtro Aceite",
"id_padre": 9,
"status": true
},
{
"id": 12,
"nombre": "Filtro De Agua",
"id_padre": 9,
"status": true
}
]
},
{
"id": 13,
"nombre": "Sensores",
"id_padre": 0,
"status": true
},
{
"id": 17,
"nombre": "Croche",
"id_padre": 0,
"status": true,
"array": [
{
"id": 18,
"nombre": "Ajustar",
"id_padre": 17,
"status": true
},
{
"id": 19,
"nombre": "Desajustar",
"id_padre": 17,
"status": true
}
]
},
{
"id": 20,
"nombre": "Picos",
"id_padre": 0,
"status": true,
"array": [
{
"id": 21,
"nombre": "Sujeción",
"id_padre": 20,
"status": true
},
{
"id": 23,
"nombre": "Formacion",
"id_padre": 20,
"status": true
},
{
"id": 22,
"nombre": "Altura",
"id_padre": 20,
"status": true
}
]
}
];
html=listado(arrayjson);
document.getElementById("listado").innerHTML=html;
function listado(array, l) {
if ( l == undefined)
l=0, html="";
for (n in array) {
html += "<li>"+array[n].nombre+"</li>\n";
if (array[n].array) {
listado(array[n].array, l+1);
};
};
return html;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
----------------- lista generada por la funcion -----------------
<div id="listado"></div>
----------------- lista que espero obtener de la funcion -----------------
<div>
<li>Electrica
<ul>
<li>Termico</li>
<li>Relé</li>
<li>Contactores</li>
</ul>
</li>
<li>Mecanica
<ul>
<li>Motores</li>
</ul>
</li>
<li>Sellos
</li>
<li>Filtro
<ul>
<li>Filtro 0,22 U</li>
<li>Filtro Aceite</li>
<li>Filtro De Agua</li>
</ul>
</li>
<li>Sensores
</li>
<li>Croche
<ul>
<li>Ajustar</li>
<li>Desajustar</li>
</ul>
</li>
<li>Picos
<ul>
<li>Sujeción</li>
<li>Formacion</li>
<li>Altura</li>
</ul>
</li>
</div>
这就是你需要的:
我在 JSON 的最后一个元素中添加了一些额外的元素,以检查递归函数是否正确完成其工作:
它所做的是为找到的每个元素构建列表,如果找到超过 4 个元素(当存在第五个“数组”元素时),那么它会再次调用自身来构建另一个子列表。
我希望我有所帮助。我注意任何疑问。
这里我给你一个例子,它允许你使用基于你显示的JSON的HTML标签创建一个下拉列表,它还包括一个显示或隐藏列表子级别的例程,为此我使用jQuery还有一点CSS和JavaScript。
<ul>...<li>