javascript - 尝试迭代

标签 javascript json

我正在尝试迭代 JSON 对象并将数组中的每个项目包装在 li 标记中。

这是我的 JSON 结构

 var classYear = {
    "1921": [
        'name1', 'name2', 'name3', 'name4'
    ],
    "1933": [
        'name5', 'name6', 'name7', 'name8'
    ],
   "1943": [
        'name9', 'name10', 'name11', 'name12', 'name13'
    ]
};

这是我的 JavaScript

var container = document.getElementById('classYearContainer');

function classYearOutput(yClass, yId, listId, key, name) {
    return '<div class="'+ yClass +'" id="'+ yId +'">' + 
        '<h4>' + key + '</h4>' +
        '<ul id="'+ listId +'">' + name + '</ul>' +
        '</div>';
}

function nameList(name) {
  return '<li>' + name + '</li>';
}

for(var year in classYear) {
     container.innerHTML += classYearOutput(
        'category',
          'y-' + year,
         year + '-list',
         year,
            nameList(classYear[year])
  );
}

通过此设置,我的输出将返回一个 li 中的所有名称,而不是单独的 li 标记。奇怪的是,当我 console.log 时,我得到了预期的结果,但是当我 return 时,它会将所有名称放在同一个 li 中。

感谢您的帮助。

最佳答案

classYear[year] 是一个数组,您将其传递给 nameList 函数。

您还必须迭代该函数

function nameList(name) {

    var html = '';

    for (var i=0; i<name.length; i++) {
        html += '<li>' + name[i] + '</li>';
    }

    return html;
}

关于javascript - 尝试迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573187/

相关文章:

javascript - 具有相同 'name' 属性的多个表单字段未发布

php - 如何在 JSON 响应中表示 MySql 零填充

javascript - Node 从url中获取json

javascript - 如何在 Angular 应用程序上收听外部 js 事件?

javascript - 在选择带图片的 radio 上打开 div

javascript - _.map 无法正常工作

javascript - 如何从客户端清除/设置具有 Ajax Control Toolkit HTML Editor Extender 的 Asp.Net TextBox 的值?

python - jq 或 python 脚本删除 json 字段中日期之后的文本

json - JSON 的 xpath 与 XML 不同

json - 解析为json字符串正确格式