javascript - 如何使用 jquery 将 html 树转换为自定义的 json 树?

标签 javascript jquery html json

<ul id='parent_of_all'>
<li>
  <span class='operator'>&&</span>
  <ul>
    <li>
      <span class='operator'>||</span>
      <ul>
        <li>
          <span class='operator'>&&</span>
          <ul>
            <li>
            <span class='condition'>1 == 1</span>
            </li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
  <ul>
    <li>
      <span class='condition'>1 != 0</span>
    </li>
  </ul>
</li>
</ul>

{"&&":[{'||':[ {'&&':[ {"lhs": "1", "comparator": "==", "rhs":"1"} ]} ] } , {"lhs": "1", "comparator": "!=", "rhs":"0"}]}

截至目前,我了解 jQuery、JavaScript 的基础知识。我需要知道从哪里开始思考才能完成上述转换。

而且 html 树可能会因子级越多而越复杂。

最佳答案

您可以使用 eachmap 执行此操作

var obj = {}
var span = $('li > span').not('ul li span').text();

$('ul li span').each(function() {
 var text = $(this).text().split(' ');
 obj[span] = (obj[span]||[]).concat({lhs: text[0], comparator: text[1], rhs: text[2]});
});

console.log(obj)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li>
  <span>&&</span>
  <ul>
    <li>
      <span>1 == 1</span>
    </li>
  </ul>
  <ul>
    <li>
      <span>1 != 0</span>
    </li>
  </ul>
</li>

关于javascript - 如何使用 jquery 将 html 树转换为自定义的 json 树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409013/

相关文章:

javascript - 复选框选择/取消选择上的淡入/淡出 div

javascript - 删除除点、逗号和 '$' 之外的非数字字符 ?

javascript - 在基于 php 的循环上运行 javascript

javascript - 没有动态参数的jquery ajax回调函数

javascript - JS 函数只追加一行

html - Canvas 中文字轮廓的刺

javascript - Angular FormArrays : Valuechanges, 验证器和取消选择复选框的问题

jquery - 如何使用 jquery 查找元素的第 n 个父元素

html - CSS 文本环绕折叠容器

php - CREATE IDENTIFIER ----使用php将2个表单数据插入到一张表中