【问题标题】:Generating structured HTML from JSON object从 JSON 对象生成结构化 HTML
【发布时间】:2016-03-18 19:50:24
【问题描述】:

我正在尝试从以下 JSON 对象生成表格的最佳方法:

mytable=[
    {div:{
        nested:[
            {table:{
                nested:[
                    {thead:{
                        nested:[
                            {tr:{
                                nested:[
                                    {th:{}},
                                    {th:{}},
                                    {th:{}}
                                ]}}
                        ]
                    }},
                    {tbody:{}}
                ]}}
        ]}}
];

最终结果将生成 HTML 元素并按如下方式构造:

<div>
    <table>
        <thead>
            <tr>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
                <th></th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</div>

我的逻辑是检查对象是否具有属性nested 如果有,则生成元素并继续循环,但是我不知道如何将子元素同时绑定回父元素时间。

【问题讨论】:

  • 您不需要返回在 json 中构建的表。只需返回数据并使用 javascript 构建 html
  • @VitorRigoni 我知道你在说什么,但这不是我想要的,我想使用更动态的方法,使用循环来加速开发。
  • 您的JSON 无效。您的嵌套 th 有问题。另外,你试过什么?
  • 只是一个想法,但您可以将您的 json 转换为 xml(有很多工具),您将拥有即时 html :)
  • @cl3m 很好,很抱歉现在修复。

标签: javascript html json dynamically-generated


【解决方案1】:

这样就可以了:

var mytable = /* your json */

function toHTML(j, n) {

    n = n || document.createDocumentFragment('div');
    for (var i = 0, o, l = j.length; i < l; i++) {
        for (var tag in j[i]) {
            o = document.createElement(tag);
            n.appendChild(o);
            'nested' in j[i][tag] && toHTML(j[i][tag].nested, o);
        }
    }
    return n;
}
var res = toHTML(mytable);

// now append it where needed
document.body.appendChild(res);

【讨论】:

  • 你先生是个野兽!我喜欢简写。如果你住在旧金山湾区并且需要一份工作,我们会雇佣你:)
  • 谢谢@JordanDavis,目前我在瑞士还好......永远不要说永远! ;)
  • @fedeghe 我正在寻找一种 OOP 方式来做同样的事情,但是对于服务器响应,你有什么吗? stackoverflow.com/questions/36581180/…
  • @JordanDavis,因为你的问题有点含糊,所以我参考了另一个问题的链接......我在这方面做了很多工作,我在这里给出的答案只是一个超蒸馏版本那github.com/fedeghe/widgzard ...值得一看,希望有所帮助...顺便说一句,不清楚您为什么说“用于服务器响应”...为什么json的来源很重要?
  • @fedeghe 我在评论底部发布了一个链接
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 2022-09-28
  • 2019-03-23
相关资源
最近更新 更多