【问题标题】:Appending td in tr and then in tbody在 tr 中附加 td,然后在 tbody 中
【发布时间】:2019-06-27 18:43:16
【问题描述】:

我有下一个代码:

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没有附加到tr?我只在tr 中获得文本。

【问题讨论】:

    标签: javascript jquery html append


    【解决方案1】:

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

    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,因为("&lt;td&gt;" + 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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2012-05-11
      • 2013-08-23
      • 2015-12-24
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多