Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $dot每个不适用于递归(JS)_Javascript_Html_Jquery_Foreach - Fatal编程技术网

Javascript $dot每个不适用于递归(JS)

Javascript $dot每个不适用于递归(JS),javascript,html,jquery,foreach,Javascript,Html,Jquery,Foreach,我有一个递归调用rec_append()的循环,显然第一次循环就可以了,然后循环就停止了 我有一个包含4个元素的数组进入该$。每个循环,但我只看到递归进入函数的第一个元素。救命啊 我把它换成了一个元素。forEach但这只给了我第二个元素,我被卡住了,有更好的解决方案来处理元素树吗?我的数组是树的一部分 var data = JSON.parse(JSON.stringify(result)) var graph = $(".entry-point");

我有一个递归调用rec_append()的循环,显然第一次循环就可以了,然后循环就停止了

我有一个包含4个元素的数组进入该$。每个循环,但我只看到递归进入函数的第一个元素。救命啊

我把它换成了一个元素。forEach但这只给了我第二个元素,我被卡住了,有更好的解决方案来处理元素树吗?我的数组是树的一部分

var data = JSON.parse(JSON.stringify(result))
        var graph = $(".entry-point");

        function rec_append(requestData, parentDiv) {

          var temp_parent_details;
          $.each(requestData, function (index, jsonElement) {

            if (typeof jsonElement === 'string') {
              //Element construction

              //Name and other details in the form of a : delimited string
              var splitString = jsonElement.split(':');

              var details = document.createElement("details");
              var summary = document.createElement("summary");
              summary.innerText = splitString[0];
              details.append(summary);
              temp_parent_details = details;
              parentDiv.append(details);

              var kbd = document.createElement("kbd");
              kbd.innerText = splitString[1];
              summary.append(' ');
              summary.append(kbd);

              var div = document.createElement("div");
              div.className = "col";
              details.append(div);

              var dl = document.createElement("dl");
              div.append(dl);

              var dt = document.createElement("dt");
              dt.className = "col-sm-1";
              dt.innerText = "Path";
              div.append(dt);

              var dd = document.createElement("dd");
              dd.className = "col-sm-11";
              dd.innerText = splitString[2];
              div.append(dd);

              var dt2 = document.createElement("dt");
              dt2.className = "col-sm-1";
              dt2.innerText = "Type";
              div.append(dt2);

              var dd2 = document.createElement("dd");
              dd2.className = "col-sm-11";
              dd2.innerText = splitString[1];
              div.append(dd2);
            } else {
              $.each(jsonElement, function (jsonElementArrIndx, jsonChildElement) {
                rec_append(jsonChildElement, temp_parent_details); //Only 1 pass works, rest skip
              });

            }

          });
        }

        rec_append(data, graph);

示例数据:

您确定
jsonElement
是一个数组吗?你只有一张字符串支票。还有错误吗?是的,有时它是一个对象(python中的键值dict),有时它是一个数组。您可以显示一个已知数据的小样本吗?为什么要在
$中“写入”点。标题中的each()
?o、 o
temp\u parent\u详细信息
将是
未定义的
,然后在第一次递归中,您将追加。未定义的顶点