递归部分是相当虚幻的。
对于一个给定的HTML结构,未知的深度,我需要转换为JSON。
- (我使用的是我正在构建的一些YAML国际化翻译系统)*
我的总体思路是深入到找到INPUT
,然后用span.innerHTML/input. Value
的键/值创建一个对象,并返回该对象,因此它将是最后到达的<span class="title">
的KEY的VALUE。
JSBIN playground -实时代码示例
我无法让我的递归函数输出我想要的JSON...
HTML结构
<ul>
<li>
<span class="title">footer</span>
<ul>
<li>
<span>statement</span>
<input type="text" value="xxx">
</li>
</ul>
</li>
<li>
<span class="title">landing</span>
<ul>
<li>
<span>page_title</span>
<input type="text" value="yyy">
</li>
<li>
<span>page_sub_title</span>
<input type="text" value="xxx">
</li>
<li>
<span class="title">pricing</span>
<ul class="level11">
<li>
<span>title</span>
<input type="text" value="aaa">
</li>
<li>
<span>cost</span>
<input type="text" value="xxx">
</li>
</ul>
</li>
</ul>
</li>
</ul>
需要JSON输出
{
footer : {
statement : 'xxx'
},
landing : {
page_title : 'yyy',
page_sub_title : 'xxx',
pricing : {
title : 'aaa',
cost : 'xxx'
}
}
}
5条答案
按热度按时间mspsb9vt1#
我是新来的,我不知道如何发表评论。我想问你,无论哪个部门,这是否总是结构。如果答案是否定的,那么不要读我的答案:)。
所以首先我添加了一个函数getPrevious,因为直接尝试获取前一个兄弟节点会返回一个文本节点。接下来我稍微改变了一下递归,因为它不是一个简单的递归,json格式(父子关系)与html格式不同。我又尝试了2个级别,它还可以。我希望它有帮助,如果没有,我很抱歉。
rhfm7lfc2#
如果你能说服自己使用jQuery,试试this:
mfpqipee3#
您将获得:
[{" UL ":[{" LI":[{" DIV ":[]}]}、{" LI":[{" DIV ":[]}、{" UL":[{" LI ":[{" DIV":[]}]}、{" LI ":[{" DIV":[]}]}、{" LI ":[{" DIV":[]}]}、{" LI ":[{" DIV":[]}]}、{" LI ":[{" DIV":[]}]}、{" LI ":[{" DIV":[]}]}、{" LI ":[{" DIV":[]}]}、{" LI":[{" DIV":[]}]}、{" LI":[{" DIV":[]}]}}、{" LI":[{" DIV":[]}]}}、{" LI":[{" DIV":[]}}]}}、{
lx0bsm1f4#
试试这个:
91zkwejq5#
实时示例