javascript - 在 tr 中追加 td,然后在 tbody 中追加

标签 javascript jquery html append

我有下一个代码:

var data_object =[{"data1":"DATA1","data2":"DATA2","data3":"DATA3"}]

var tr;
for (var ctr = 0; ctr < data_object.length; ctr++) {
  tr = $("<tr></tr>");
  tr.append("<td>" + data_object[ctr].data1 ? data_object[ctr].data1 : '' + "</td>");
  tr.append("<td>" + data_object[ctr].data2 ? data_object[ctr].data2 : '' + "</td>");
  tr.append("<td>" + data_object[ctr].data3 ? data_object[ctr].data3 : '' + "</td>");

  $('#tblAutoMatch tbody').append(tr)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="tblAutoMatch" class="table table-bordered" width="100%">
  <thead>
    <tr>
      <th class="col-md-1" style="text-align: center; width: 5%;">Data 1</th>
      <th class="col-md-1" style="text-align: center; width: 13%;">Data 2</th>
      <th class="col-md-1" style="text-align: center; width: 13%;">Data 3</th>
    </tr>
  </thead>
  <tbody></tbody>
</table>

但是,有一个问题:为什么td没有 append 到tr?我只在 tr 中获取文本。

最佳答案

您需要将使用三元运算符的表达式用括号 (...) 括起来, 例子:

tr.append("<td>" + (data_object[ctr].data1 ? data_object[ctr].data1 : '') + "</td>");

因此,它们会按照您的预期进行评估。否则你的表达式将被这样计算:

tr.append(("<td>" + data_object[ctr].data1) ? data_object[ctr].data1 : ('' + "</td>"));

并且会缩减为data_object[ctr].data1因为("<td>" + data_object[ctr].data1)将被评估为 true .

$(document).ready(function()
{
    var data_object = [
      {"data1":"DATA1","data2":"DATA2","data3":"DATA3"}
    ];

    var tr;
    
    for (var ctr = 0; ctr < data_object.length; ctr++)
    {
        tr = $("<tr>");
        tr.append("<td>" + (data_object[ctr].data1 ? data_object[ctr].data1 : '') + "</td>");
        tr.append("<td>" + (data_object[ctr].data2 ? data_object[ctr].data2 : '') + "</td>");
        tr.append("<td>" + (data_object[ctr].data3 ? data_object[ctr].data3 : '') + "</td>");

        $('#tblAutoMatch tbody').append(tr)
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table id="tblAutoMatch" class="table table-bordered" width="100%">
  <thead>
    <tr>
      <th class="col-md-1" style="text-align: center; width: 5%;">Data 1</th>
      <th class="col-md-1" style="text-align: center; width: 13%;">Data 2</th>
      <th class="col-md-1" style="text-align: center; width: 13%;">Data 3</th>
    </tr>
  </thead>
  <tbody></tbody>
</table>

关于javascript - 在 tr 中追加 td,然后在 tbody 中追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54509135/

相关文章:

javascript - HTML5 SSE在Grails中

javascript - 以渐进方式渲染渐进图像

javascript - Jquery 在搜索表单上加载图像

javascript - Angular/Material 中的样式化 mat-form-field 输入

javascript - Typescript 中的对象类型

javascript - 从段落中检索文本并更改其颜色

javascript - 如何使用正则表达式替换部分字符串?

jQuery 将某些单词包装在 <strong> 标签中

javascript - 在 javascript/jquery IE 与 Chrome 和 FF 中读取@font-face css

javascript - 使用 jQuery 在 html 表 td 中的特定输入字段上显示错误