脚本未对齐 table

Script misaligns table

我有基本的table

html

<table id="damageList">
  <tr>
   <td>#</td>
   <td>Type</td>
   <td>Delete</td>
  </tr>
</table>

我正在尝试使用

动态填充数据

js

function addDamage(){
  var trA= "<tr>";
  var trB= "</tr>";
  var td1= "<td>"+nmbr+"</td>";
  var td2= "<td>"+type+"</td>";
  var td3= "<td><a href='#confirmDialog'>X</a></td>";

  $("#damageList").append(trA, td1, td2, td3, trB);

  nmbr++;
}

(变量 nmbr 是行编号,从 1 开始,类型在别处动态求解)

问题是,我没有得到正确的 table。

我得到的是:

<table id="damageList">
  <tr>
   <td>#</td>
   <td>Type</td>
   <td>Delete</td>
  </tr>
  <tr></tr>
  <td>1</td>
  <td>K</td>
  <td>
   <a href="#confirmDialog">X</a>
  </td>
</table>

有人能告诉我,我哪里弄错了吗?

尝试将您的函数更改为以下内容:

function addDamage(){
  var val = [
     "<tr>",
     "<td>"+nmbr+"</td>",
     "<td>"+type+"</td>",
     "<td><a href='#confirmDialog'>X</a></td>",
     "</tr>"
  ].join('');

  $("#damageList").append(val);

  nmbr++;
}

jQuery 会自动处理您的第一个未关闭的 <tr> 并在将其附加到 #damageList 之前创建 <tr></tr>。然后它将三个 <td> 附加到 #damageList。最后,它丢弃了关闭 </tr> 因为它不知道如何处理它。在附加之前将值连接在一起将解决您的问题。

DOM 这样不行。您不能单独附加 opening/closing 标签。您应该传递元素的完整字符串表示形式。发生的事情是:

$("#damageList")
     .append(trA, // append a TR, since `<tr>` can be parsed as an element
             td1, // append a TD
             td2, // append a TD
             td3, // append a TD
             trB // append a closing `</tr>` tag, silently fails
     ); 

您可以连接字符串,然后将其传递给 jQuery。

$("#damageList").append(trA + td1 + td2 + td3 + trB);

另请注意,您应该用 tbody 元素包裹行并将生成的行附加到它:

$("#damageList tbody").append(...)