首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JSON对象创建html表

使用JSON对象创建html表
EN

Stack Overflow用户
提问于 2020-04-22 10:43:28
回答 1查看 25关注 0票数 0

我知道有很多类似的问题。这段代码是许多其他堆栈溢出问题的科学怪人。但我已经很接近了,我只是不能理解我一直试图很好地使用示例的代码。这是我的html页面:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
    <script src="Scripts.js"></script> 
    <script>


    </script>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script>

</head>

<body>

    <p id="demo"></p>


    <script>

      obj.Blades.forEach(element => {
          var name = element.Name + " " + element.Damage;
          document.write(name + "<br >");
      });
    </script>

<input type="button" value="Generate Table" onclick="makeTable()" />
<hr />
<div id="dvTable"></div>

</body>
</html>

下面是Java脚本页面:

代码语言:javascript
运行
复制
var jsonStuff = '{ "Blades" : [' +
'{ "Name":"Longsword" , "Damage":"l2d" },' +
'{ "Name":"Dagger" , "Damage":"l3d" },' +
'{ "Name":"Mace" , "Damage":"l4d" },' +
'{ "Name":"Spear" , "Damage":"l5d" } ]}'; 


var obj = JSON.parse(jsonStuff);

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

 //Get the count of columns.
 var columnCount = Object.keys(obj.Blades).length;

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

    //Add the data rows.
    for (var i = 1; i < obj.Blades.length; i++) {

       row = table.insertRow(-1);
       for (var j = 0; j < columnCount; j++) {
           console.log(obj.Blades[j].Damage);
           var cell = row.insertCell(-1);
           cell.innerHTML = obj.Blades[i][j];
       }
   }

   var dvTable = document.getElementById("dvTable");
   dvTable.innerHTML = "";
   dvTable.appendChild(table);
}

现在看起来是这样的:

所以我知道问题一定出在JavaScript注释为“添加数据行”的某处。我现在就知道该怎么做了。

EN

回答 1

Stack Overflow用户

发布于 2020-04-22 11:08:17

我相信你的问题出在线路上:

代码语言:javascript
运行
复制
cell.innerHTML = obj.Blades[i][j];

您引用Blades时,就好像它是一个二维数组,而实际上它是一个对象数组。你需要有这样的东西来避免未定义的:

代码语言:javascript
运行
复制
cell.innerHTML = obj.Blades[i].Name;
cell.innerHTML = obj.Blades[i].Damage;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61356408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档