提问者:小点点

如何将数组的元素放入html表格行和列中


我需要将一个数组的每个元素放入相应的表列,但目前它只是将整个数组放入第一列。我觉得这个解决方案将是一个简单的嵌套循环,但我不确定,将感谢任何帮助。谢啦!

index.html

<div id="PersonContainer" class="DBcontainer">
        <form action='/addPerson' method="GET"></form>
        <table class="center" id="personTable">
            <caption>People Table</caption>
            <thead>
                <tr>
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Hooks ID</th>
                    <th>Soft Plastic ID</th>
                    <th>Rods ID</th>
                    <th>Number of Hooks</th>
                    <th>Number of Soft Plastics</th>
                </tr>
            </thead>
            <tbody>
                
            </tbody>
        </table>

        <button type="button" onclick="displayPerson()">Click Me</button>
        </form>

    </div>

index.html脚本

<script>
        function displayPerson() {
            // console.log('test');
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    var person = xhttp.responseText;
                    var element = document.getElementById("personTable");
                    var result = JSON.parse(person).map((item) => Object.values(item));
                    for(i = 0; i < result.length; i++){
                        element.innerHTML += '<td>' + result[i] + '</td>';
                    }
                }
            };
            xhttp.open("GET", "/AddPerson", true);
            xhttp.send();
        }
    </script>

XHTTP.ResponseText

[{"id":1,"first_name":"Tyler","last_name":"Marlow","hooks_id":1,"sp_id":1,"rods_id":1,"num_hooks":10,"num_sp":30},{"id":2,"first_name":"Jon","last_name":"Marlow","hooks_id":2,"sp_id":1,"rods_id":1,"num_hooks":50,"num_sp":200}]

还请注意,当添加另一个人时,我希望将另一行添加到表中,其中的值位于正确的列中


共2个答案

匿名用户

使用insertRow函数可以在JavaScript中向表中添加新行,使用insertCell函数可以向行中添加单元格。

因此,在代码中(具体取决于解析后的JSON的外观),在for循环中,您将执行如下操作:

行=Element.InsertRow(i);//向表row.insertCell(0).innerHTML=row.insertCell(1).innerHTML=以此类推。。。。当然,您也会将insertCell行放入for循环中。

匿名用户

null

function displayPerson() {
  // console.log('test');            
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      var person = xhttp.responseText;
      var element = document.getElementById("personTable");
      var rows = ``;
      JSON.parse(person).forEach(item => {
        var row = `<tr>`;
        row += `<td>${item.first_name}</td>`;
        row += `<td>${item.last_name}</td>`;
        row += `<td>${item.hooks_id}</td>`;
        row += `<td>${item.sp_id}</td>`;
        row += `<td>${item.rods_id}</td>`;
        row += `<td>${item.num_hooks}</td>`;
        row += `<td>${item.num_sp}</td>`;
        row += `</tr>`;
        rows += row;
      });
      element.innerHTML = rows;
    }
  };
  xhttp.open("GET", "/AddPerson", true);
  xhttp.send();
}
<div id="PersonContainer" class="DBcontainer">
  <form action='/addPerson' method="GET">
    <table class="center">
      <thead>
        <tr>
          <th>First Name</th>
          <th>Last Name</th>
          <th>Hooks ID</th>
          <th>Soft Plastic ID</th>
          <th>Rods ID</th>
          <th>Number of Hooks</th>
          <th>Number of Soft Plastics</th>
        </tr>
        <thead>
          <tbody id="personTable">
          </tbody>
    </table>

    <button type="button" onclick="displayPerson()">Click Me</button>
  </form>
</div>