添加<ul>标签

时间:2016-12-27 19:15:09

标签: jquery arrays json

我在for循环

中的ul标签中添加li标签时遇到了麻烦

这是我的json:

android.view.InflateException: Binary XML file line #35: Error inflating class null

这是我的循环代码的js:

{
 "pageArr": [
    {"curve_main": "Curve-1",
      "curve_sub": [
        {"curve_name": "A-1",
         "curve_rel": [
            "Conrway-1",
            "Conrway-2",
            "Conrway-3",
            "Conrway-4",
            "Conrway-5",
            "Conrway-6"
          ]
        }
      ]
    }
  ]
}

});

我正在尝试将“curve_rel”数组渲染到“li”标签中并将它们包装在“ul”标签中。我已设法在li标签中呈现它们,如何将它们包装在 for (i = 0; i < data.pageArr.length; i++) { container.append("<h1>" + data.pageArr[i].curve_main + "</h1>"); for (x = 0; x < data.pageArr[i].curve_sub.length; x++) { container.append("<h2>" + data.pageArr[i].curve_sub[x].curve_name + "</h2>"); for (y = 0; y < data.pageArr[i].curve_sub[x].curve_rel.length; y++) { container.append("<li>" + data.pageArr[i].curve_sub[x].curve_rel[y] + "</li>"); } } } });

我现在的forloop正在渲染到

<ul>

由于 贾斯汀

3 个答案:

答案 0 :(得分:0)

您可以检查索引以确定何时附加ul标记。

如果索引为0,请添加开头<ul>。如果索引等于数组的(长度+ 1)(长度不是像你的循环一样从0开始),那么添加结束</ul>

for循环中:

container.append("<h2>" + data.pageArr[i].curve_sub[x].curve_name + "</h2>");
if (x === 0) {
  container.append('<ul>');
}

// add your <li> tags here

if (x + 1 === data.pageArr[i].curve_sub.length) {
  container.append('</ul>');
}

您可以通过将+ 1循环更改为:

来避免for计算

for (x = 1; x <= data.pageArr[i].curve_sub.length; ++x)

在那个例子中,代码是:

container.append("<h2>" + data.pageArr[i].curve_sub[x].curve_name + "</h2>");
if (x === 1) {
  container.append('<ul>');
}

// add your <li> tags here

if (x === data.pageArr[i].curve_sub.length) {
  container.append('</ul>');
}

答案 1 :(得分:0)

假设您只想在容器中添加字符串,那么您可以在&amp;之前添加ul。在你的内循环之后:

for (x = 0; x < data.pageArr[i].curve_sub.length; x++) {
            container.append("<h2>" + data.pageArr[i].curve_sub[x].curve_name + "</h2>");
            container.append('<ul>');
                        for (y = 0; y < data.pageArr[i].curve_sub[x].curve_rel.length; y++) {
                            container.append("<li>" + data.pageArr[i].curve_sub[x].curve_rel[y] + "</li>");
                        }
            container.append('</ul>');
        }

但是,这些代码都不会实际向DOM添加任何内容。如果你想这样做,那么你需要使用document.createElement()。像这样:

for (i = 0; i < data.pageArr.length; i++) {
    var h1 = document.createElement('h1');
    container.append(h1);
    h1.append(data.pageArr[i].curve_main);

    for (x = 0; x < data.pageArr[i].curve_sub.length; x++) {
        var h2 = document.createElement('h2');
        container.append(h2);
        h2.append(data.pageArr[i].curve_sub[x].curve_name);

        var ul = document.createElement('ul');
        container.append(ul);
        for (y = 0; y < data.pageArr[i].curve_sub[x].curve_rel.length; y++) {
            var li = document.createElement('li');
            li.append(data.pageArr[i].curve_sub[x].curve_rel[y]);
            ul.append(li);
        }
    }
}

答案 2 :(得分:-1)

只是逃避引号

Console