JavaScript:递归函数以创建嵌套的UL

罗伯特·弗雷内特

我一直在尝试根据以下数据创建嵌套的UL:

[{"unique_id" : "UFID-06", "level" : "-3"}, 
 {"unique_id" : "UFID-05", "level" : "-2"}, 
 {"unique_id" : "UFID-04", "level" : "-1"}, 
 {"unique_id" : "UFID-03", "level" : "1"}, 
 {"unique_id" : "UFID-02", "level" : "2"},
 {"unique_id" : "UFID-01", "level" : "3"}];

但是我在FireBug中收到了“太多递归”消息。

我希望有人可以在以下方面发现我要去的地方:

function process(data) {    
    var childDiv = document.createElement('div');
    for (var i in data) {
        var unique_id = data[i].unique_id;
        var level = data[i].level;

        var ul  = document.createElement('ul');
        var li  = document.createElement('li');
        var txt = document.createTextNode(unique_id + ' : ' + level);

        li.appendChild(txt);
        ul.appendChild(li);
        li.appendChild(txt);

        childDiv.appendChild(ul);
        process(data[i]);
    }
    return childDiv;
}

这是一个小提琴(https://jsfiddle.net/rt4gL1ff/2/)。请注意,以下行已被注释掉,因为执行该行将导致“递归过多”错误。

//parentDiv.appendChild(process(obj));

非常感谢!

Sasidhar Boddeti

没有停止条件 process(data[i]);

以及您无需使用递归函数即可完成任务

请尝试以下操作:

var parentDiv = document.getElementById('parentDiv');

var obj = [{"unique_id" : "UFID-06", "level" : "-3"}, 
       {"unique_id" : "UFID-05", "level" : "-2"}, 
       {"unique_id" : "UFID-04", "level" : "-1"}, 
       {"unique_id" : "UFID-03", "level" : "1"}, 
       {"unique_id" : "UFID-02", "level" : "2"},
       {"unique_id" : "UFID-01", "level" : "3"}];

function process(data) {    
    var childDiv = document.createElement('div');
    var prevParent = childDiv; //initially the parent od all ul's should be div
    for (var i in data) {
       var unique_id = data[i].unique_id;
       var level = data[i].level;

       var ul  = document.createElement('ul');
       var li  = document.createElement('li');
       var txt = document.createTextNode(unique_id + ' : ' + level);

       li.appendChild(txt);
       ul.appendChild(li);

       prevParent.appendChild(ul);
       prevParent = ul; //update the parent ul to which the next elements are added
       //process(data,level+1);
   }
   return childDiv;
}

parentDiv.appendChild(process(obj));

查看小提琴https://jsfiddle.net/rt4gL1ff/6/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建递归函数以创建值列表

来自分类Dev

Javascript:修改函数以动态创建表

来自分类Dev

递归函数以在JavaScript中打印数字

来自分类Dev

递归函数以简化javascript中的表达式

来自分类Dev

递归函数以在JavaScript中打印数字

来自分类Dev

如何在R中编写递归函数以生成动态嵌套的for循环?

来自分类Dev

在javascript中创建函数以根据选择启用/禁用输入

来自分类Dev

创建JavaScript / jQuery函数以某种方式使用

来自分类Dev

如何创建递归函数以将多级字典对象打印到文件

来自分类Dev

创建递归函数以将节点添加到链表中

来自分类Dev

带递归的嵌套函数

来自分类Dev

快速嵌套递归函数

来自分类Dev

递归函数以反向字符串

来自分类Dev

递归函数以某种方式打印

来自分类Dev

递归调用函数以供用户输入

来自分类Dev

如何编写此迭代函数以递归?

来自分类Dev

递归调用函数以供用户输入

来自分类Dev

编写递归函数以识别偶数/奇数

来自分类Dev

JavaScript递归函数,用于数组中的嵌套对象

来自分类Dev

如何在JavaScript中创建构造函数以创建构造函数?

来自分类Dev

Javascript从嵌套的UL LI复选框生成递归JSON对象

来自分类Dev

从嵌套数组创建 UL

来自分类Dev

JavaScript递归ul li json

来自分类Dev

如何创建递归函数

来自分类Dev

创建一个递归函数以获取整数列表中所有可能子集的总和

来自分类Dev

创建一个有条件的递归函数以计算R = x-N * y

来自分类Dev

递归嵌套私有函数

来自分类Dev

递归嵌套私有函数

来自分类Dev

基于选项网格在Javascript / jQuery中创建递归函数