【问题标题】:I want to get a Javascript array in a HTML Table [closed]我想在 HTML 表中获取 Javascript 数组 [关闭]
【发布时间】:2018-03-19 08:39:11
【问题描述】:
    <table id="table_1" border="1">
    <tr>
        <th>Name</th>

        <th>Email</th>
    </tr>
</table>



 var Classmates = ["Chris", "Jan", "Thomas", "Julia", "Tess", "Remco", "Kris", "Mark", "Rick", "Sara"];
var Emails = ["chris@gmail.com", "jan@gmail.com", "thomas@gmail.com", "julia@gmail.com", "tess@gmail.com", "remco@gmail.com", "kris@gmail.com", "mark@gmail.com", "rick@gmail.com", "sara@gmail.com"];


for (var i = 0; i < 11; i++) {
        document.write("<tr><td>" + i + "</td>");
        document.write("<td>" + Classmates[i], Emails[i] + "</td></tr>");
    }

我希望这个数组显示在一个简单的 html 表格中,以便在同学姓名旁边显示电子邮件。

【问题讨论】:

  • 分享你的尝试
  • 给我们看代码..你试过什么?
  • 用一个循环遍历这些数组,将tds 附加到DOM。你试过这样吗?
  • 欢迎来到 Stack Overflow!请使用tour 并通读help center,尤其是How do I ask a good question? 做你的研究,search 以获取有关 SO 的相关主题,然后试一试。 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到困难的地方。人们会很乐意提供帮助。祝你好运!
  • @AbdeslemCharif 令人惊讶的是,Stackoverflow 鼓励我们,我引用,“投反对票并继续前进”,而不是问 OP“嘿,到目前为止你尝试了什么?”

标签: javascript html


【解决方案1】:

创建一个字符串变量并将 html 附加到它并为该变量执行 document.write。

var output = "";
for (var i = 0; i < 11; i++) {
    output += "<tr><td>" + i + "</td>";
    output += "<td>" + Classmates[i] + "," + Emails[i] + "</td></tr>";
}
document.write(output);

【讨论】:

    【解决方案2】:

    需要改进的地方很少

    1. table也需要写table标签
    2. 对于迭代,您可以简单地使用任一数组的长度(通过删除硬编码来改进代码)
    3. 要将同学和电子邮件显示为逗号分隔,您需要将逗号放在引号中
    4. 数组的开始在索引 0 处,因此,要获得正确的数字,请在 document.write 语句中将其增加 1

    var Classmates = ["Chris", "Jan", "Thomas", "Julia", "Tess", "Remco", "Kris", "Mark", "Rick", "Sara"];
    var Emails = ["chris@gmail.com", "jan@gmail.com", "thomas@gmail.com", "julia@gmail.com", "tess@gmail.com", "remco@gmail.com", "kris@gmail.com", "mark@gmail.com", "rick@gmail.com", "sara@gmail.com"];
    
    
    document.write("<table border='1'>");
    for (var i = 0; i < Classmates.length; i++) {
            document.write("<tr><td>" + (i+1) + "</td>");
            document.write("<td>" + Classmates[i] +", " + Emails[i] + "</td></tr>");
        }
        
    document.write("</table>");

    【讨论】:

      【解决方案3】:

      迭代每个数组并使用document.createNode 创建一个圆顶节点。使用appendChild 将tr & td 附加到表中

      var Classmates = ["Chris", "Jan", "Thomas", "Julia", "Tess", "Remco", "Kris", "Mark", "Rick", "Sara"];
      var Emails = ["chris@gmail.com", "jan@gmail.com", "thomas@gmail.com", "julia@gmail.com", "tess@gmail.com", "remco@gmail.com", "kris@gmail.com", "mark@gmail.com", "rick@gmail.com", "sara@gmail.com"];
      
      for (var i = 0; i < Classmates.length; i++) {
        let _tr = document.createElement('tr');
        let _tdClassmates = document.createElement('td');
        let _tdEmail = document.createElement('td');
      
        _tdClassmates.innerHTML = Classmates[i];
        _tdEmail.innerHTML = Emails[i];
        _tr.appendChild(_tdClassmates);
        _tr.appendChild(_tdEmail);
        document.getElementById('studentTable').appendChild(_tr);
      
      }
      &lt;table id='studentTable' border="1px solid black"&gt;&lt;/table&gt;

      【讨论】:

        【解决方案4】:

        您可以在顶部定义所有变量并创建新元素并构建新表。稍后将表格附加到正文中。

        var classmates = ["Chris", "Jan", "Thomas", "Julia", "Tess", "Remco", "Kris", "Mark", "Rick", "Sara"],
            emails = ["chris@gmail.com", "jan@gmail.com", "thomas@gmail.com", "julia@gmail.com", "tess@gmail.com", "remco@gmail.com", "kris@gmail.com", "mark@gmail.com", "rick@gmail.com", "sara@gmail.com"],
            table = document.createElement('table'),
            tr = document.createElement('tr'),
            td, th,
            i;
        
        th = document.createElement('th');
        th.appendChild(document.createTextNode('Name'));
        tr.appendChild(th);
        
        th = document.createElement('th');
        th.appendChild(document.createTextNode('e-Mail'));
        tr.appendChild(th);
        
        table.appendChild(tr);
        
        for (i = 0; i < 10; i++) {
            tr = document.createElement('tr');
        
            td = document.createElement('td');
            td.appendChild(document.createTextNode(classmates[i]));
            tr.appendChild(td);
        
            td = document.createElement('td');
            td.appendChild(document.createTextNode(emails[i]));
            tr.appendChild(td);
        
            table.appendChild(tr);
        }
        
        document.body.appendChild(table);

        【讨论】:

          【解决方案5】:

          给表格一个ID。就我而言,我使用'table_1'。 还包括 jquery 库。

          for (var i = 0; i < 11; i++) {
          $('#table_1').append('<tr>');
          $('#table_1').append("<td>" + i + "</td>");
          $('#table_1').append("<td>" + Classmates[i], Emails[i] + "</td>");
          $('#table_1').append('</tr>');
              }
          

          【讨论】:

          • jQuery 没有被标记或被使用,因此不是一个有效的答案
          • 它可能有效,所以我没有投反对票,但它非常丑陋且没有优化。您在 每个循环 中遍历 DOM 4 次,并无用地构建相同的 jQuery 对象 4 次,这使得总共 44 次昂贵的操作而不是 1 次。而且您不需要 jQuery。在第二次投票中,被否决了。
          • 我使用 jQuery 对象 4 次来得到这个想法。您可以随心所欲地优化代码。为你投反对票而感到羞耻。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-28
          • 1970-01-01
          • 2014-11-05
          • 1970-01-01
          • 1970-01-01
          • 2019-08-15
          • 1970-01-01
          相关资源
          最近更新 更多