如何递归通过子节点和输出json
how to recurse through child nodes and output as json?
我有嵌套无序列表与儿童,我试图将所有数据从列表存储到JSON格式的数据:
以下是我的HTML代码:<nav id="nav">
<ul class="header-top-nav">
<li>
<a href="index.html">Home</a>
<ul>
<li><a href="subhome1.html">Home 1</a>
<ul>
<li><a href="subsubhome1.html">Sub Home</a></li>
</ul>
</li>
<li><a href="subhome2.html">Home 2</a></li>
<li><a href="subhome3.html">Home 3</a></li>
</ul>
</li>
</ul>
</nav>
我JQuery: content = [];
$('nav > ul').find('li').each( function () {
pages = {};
function menu() {
pages['pagelink'] = $(this).children('a').attr('href');
pages['pagename'] = $(this).children('a').text();
var submenucheck = $(this).children('ul').length;
if(submenucheck){
pages['submenu'] = [];
menu();
}
else{
pages['submenu'] = "NULL";
}
contents.push(pages);
}menu();
});
我想要的数据格式是这样的:
{
"pages": [
{
"pagelink": "index.html",
"pagename": "Home",
"submenu": [
{
"pagelink": "subhome1.html",
"pagename": "Home 1",
"submenu": [
{
"pagelink": "subsubhome1.html",
"pagename": "Sub Home",
"submenu": "NULL"
}
]
},
{
"pagelink": "subhome2.html",
"pagename": "Home 2",
"submenu": "NULL"
},
{
"pagelink": "subhome3.html",
"pagename": "Home 3",
"submenu": "NULL"
}
]
}
]
}
请帮助我实现这个目标。
试试这个
var results = { };
function getData(ul) {
var data = []
ul.children('li').each(function() {
var li = $(this),
subData = {},
a = li.children('a'),
child = li.children('ul');
subData['pagelink'] = a.attr('href');
subData['pagename'] = a.text();
if(child.length)
subData['submenu'] = getData(child);
data.push(subData);
})
return data;
}
results.pages = getData($('nav > ul'));
console.log(results);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="nav">
<ul class="header-top-nav">
<li>
<a href="index.html">Home</a>
<ul>
<li><a href="subhome1.html">Home 1</a>
<ul>
<li><a href="subsubhome1.html">Sub Home</a></li>
</ul>
</li>
<li><a href="subhome2.html">Home 2</a></li>
<li><a href="subhome3.html">Home 3</a></li>
</ul>
</li>
</ul>
</nav>
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript - 子节点计数
- 在子节点上重复
- 如何在D3.js基于力的标签布局图中获取公共子节点
- 如何访问React中的子节点
- js初学者-如何在比网页中的DOM节点低一个级别上立即解析所有子节点
- 如何递归通过子节点和输出json