将多级javascript对象输出到html列表中

时间:2017-08-02 10:05:49

标签: javascript html-lists javascript-objects

我有一个从XML转换的大型javascript对象。它具有层次结构,xml属性(由@attributename符号定义的属性)和xml值(由#text符号定义的属性)。以下是:

<parentnode length="5">
    <childnode length="22" depth="45">This is a child node</childnode>
</parentnode>

创建一个如下所示的对象:

parentnode {
    @length: "22"
    childnode {
        @depth: "45",
        @text: "This is a child node"
    }
}

我想创建一个如下所示的HTML列表:

<ul>
    <li data-length="22">parentnode
       <ul>
           <li data-depth="45">childnode: This is a child node</li>
        </ul>
    </li>
</ul>

我尝试了各种解决方案,但它们都不适用于嵌套在具有各种数据类型的对象中的对象。

1 个答案:

答案 0 :(得分:2)

整理一个简单的解决方案。也许这会帮助别人:

function createHtmlList(obj){
    var output = "";
    Object.keys(obj).forEach(function(k) {
        if (typeof obj[k] == "object" && obj[k] !== null){
            output += "<li>" + htmlSpecialChars(k) + "<ul>";
            output += createHtmlList(obj[k]);
            output += "</ul></li>";
        } else {
            output += "<li>" + k + " : " + obj[k] + "</li>"; 
        }
    });
    return output;
}