javascript - 使用 javascript 从 json 对象动态添加数据行?

标签 javascript jquery html json

我的网站项目中有一个 json 文件,如下所示:

 [
  {
"id": "1",
"name": "ramesh",
"phone": "12345",
"salary": "50000"
  },

  {
"id": "2",
"name": "suresh",
"phone": "123456",
"salary": "60000"
  }
]

这是示例数据,它有 4 列,但我不知道我将获得的 json 数据将有多少列。我正在尝试从这个 json 数据创建一个动态 html 表。这是我现在编写的代码:

<script>
    $(document).ready(function () {
        var jsonitems = [];
        $.getJSON("json.json", function (data) {
            var totalColumns = Object.keys(data[0]).length;
            var columnNames = [];
            columnNames = Object.keys(data[0]);

            //Create a HTML Table element.
            var table = document.createElement("TABLE");
            table.border = "1";

            //Add the header row.
            var row = table.insertRow(-1);
            for (var i = 0; i < totalColumns; i++) {
                var headerCell = document.createElement("TH");
                headerCell.innerHTML = columnNames[i];
                row.appendChild(headerCell);
            }

上面的代码正常工作,当我尝试插入数据行时遇到问题,下面是不起作用的代码:

            //Add the data rows.
            //for (var i = 1; i < data.length; i++) {
            //    row = table.insertRow(-1);
            //    for (var j = 0; j < totalColumns; j++) {
            //        var cell = row.insertCell(-1);
            //        cell.innerHTML = customers[i][j];
            //    }
            //}

           var dvTable = document.getElementById("dvTable");
           dvTable.innerHTML = "";
           dvTable.appendChild(table);
        });
    });
</script>

请帮我解决这个问题。 谢谢

最佳答案

您访问单元格数据的方式是错误的。例如,要访问第一个对象的 id,您必须执行 data[0]["id"],而不是您的代码尝试执行 data[ 0][0]。您的代码的工作示例:

var data = [{
    "id": "1",
    "name": "ramesh",
    "phone": "12345",
    "salary": "50000"
  },

  {
    "id": "2",
    "name": "suresh",
    "phone": "123456",
    "salary": "60000"
  }
];
var totalColumns = Object.keys(data[0]).length;
var columnNames = [];
columnNames = Object.keys(data[0]);

//Create a HTML Table element.
var table = document.createElement("TABLE");
table.border = "1";

//Add the header row.
var row = table.insertRow(-1);
for (var i = 0; i < totalColumns; i++) {
  var headerCell = document.createElement("TH");
  headerCell.innerHTML = columnNames[i];
  row.appendChild(headerCell);
}

// Add the data rows.
for (var i = 0; i < data.length; i++) {
  row = table.insertRow(-1);
  columnNames.forEach(function(columnName) {
    var cell = row.insertCell(-1);
    cell.innerHTML = data[i][columnName];
  });
}

var dvTable = document.getElementById("dvTable");
dvTable.innerHTML = "";
dvTable.appendChild(table);
<div id="dvTable"></div>

关于javascript - 使用 javascript 从 json 对象动态添加数据行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44224584/

相关文章:

html - 如何在CSS文字下方实现点和线?

javascript - undefined 不是一个函数(评估'_this.props.navigation.navigate')

javascript - "TypeError: Cannot read property ' $发出' of undefined"-VueJS

php - 如何在html页面的横幅下将 slider 和图像保持在一行中

javascript - Jquery AppendTo 错误

javascript - event.which 的值在按下 ESC 时 keyup 事件为 0

php - 如何通过hyperlink-url提交参数并在php中检索它们?

html - 如何将 <li> 元素符号元素向右移动?

javascript - 如何使用 window.scroll jquery 进行一次触发点击?

javascript - 如何使用 .load() 使用 jquery 更改图像