Javascript firefox jquery上的递归错误太多

Javascript firefox jquery上的递归错误太多,javascript,jquery,firefox,recursion,Javascript,Jquery,Firefox,Recursion,当我在Firefox上运行应用程序时,我在下面的代码中遇到了太多的递归错误。该代码将在浏览器中创建图形树结构。该方法将Json作为输入,遍历键并检查键对应的值是否为“Leaf”。如果值为“Leaf”,它将在浏览器上显示该值并移动到下一个键,否则它将递归遍历子节点,直到到达“Leaf”。浏览器上将显示节点及其所有子节点: function createmasterJson(data) { var json = ''; for (var index in data) {

当我在Firefox上运行应用程序时,我在下面的代码中遇到了太多的递归错误。该代码将在浏览器中创建图形树结构。该方法将Json作为输入,遍历键并检查键对应的值是否为“Leaf”。如果值为“Leaf”,它将在浏览器上显示该值并移动到下一个键,否则它将递归遍历子节点,直到到达“Leaf”。浏览器上将显示节点及其所有子节点:

function createmasterJson(data) {
    var json = '';
    for (var index in data) {
        var child = data[index];
        if (child == 'Leaf') {
            json = json + createLeafNode(index);
        } else {
            if (child.length) {
                for (var i = 0; i < child.length; i++) {
                    json = json + createNonLeafNode(index, createmasterJson(child[i]));
                }
            } else {
                json = json + createLeafNode(index);
            }
        }
    }
    return json;
}

function createLeafNode(index){
    return '{ "attributes": { "id" :"' + index + '_' + Math.random() +'"}, "data": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '+ index +'" },';
}

function createNonLeafNode(index, child){
    return '{ "attributes": { "id" :"' + index + '_' + Math.random() +'"}, "data": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '+ index +'" ,"state": "closed", "children" : ['+child.substring(0, child.length - 1)+']},';
}
函数createmasterJson(数据){ var json=''; for(数据中的var索引){ var child=数据[索引]; 如果(子项=='Leaf'){ json=json+createLeafNode(索引); }否则{ if(子长度){ 对于(变量i=0;i如何调用该函数?
createLeafNode
<代码>创建非叶节点<代码>数据?如果我们不知道发生了什么,我们将无法帮助您调试代码。请将我提到的两个函数以及传递给函数的数据添加到您的问题中。如果
data
包含一个字符串值,而不是
Leaf
,那么这就是您得到的结果,因为您使用相同的一个字符串递归调用
createmasteJSON()
。您肯定需要一些不同的条件,然后
if(child.length)
。如果需要数组的条件,请尝试
If(Object.prototype.toString.call(child)='[Object array]')
。启动浏览器的开发工具,设置断点并逐步执行代码。这正是我们大多数人需要做的(心理上或实际上),因此,如果你先尝试一下,也不需要太多问题。你可能应该使用
JSON.stringify
,而不是创建一个对象字符串。