使用递归,如何迭代对象以生成HTML?

时间:2017-08-27 21:22:45

标签: html javascript

我试图以递归方式对键的对象进行排序:值。它似乎工作,至少对控制台。代码获取对象并迭代键值对。如果它找到另一个对象,它会调用自己迭代该对象。我遇到的问题是后续调用似乎没有产生任何html,但它确实显示了控制台中的键值对。这是我第一次尝试递归,我不确定它是否是我宣布变量的方式,或者我是否错过了递归的工作方式。

ndmin=2

1 个答案:

答案 0 :(得分:0)

使用返回值:

const getKeyValue = (obj) => {
    let html = '<ul>';
    for (let key in obj) {
        let value = obj[key]
        if (!isObject(value)) {
            html += '<li>' + key + ":" + value + "</li>";
        } else {
            var innerValue = getKeyValue(value);
//          ^^^^^^^^^^^^^^^^
            html += '<li>' + key + ":"+ innerValue + "</li>";
//                                      ^^^^^^^^^^
        }
    }
    html += "</ul>";
    return html;
//  ^^^^^^
}

然后做

s('cards').innerHTML = getKeyValue(conditionReport);