【问题标题】:$.each is puting the results from loop out of the <table> [duplicate]$.each 将循环的结果从 <table> [重复]
【发布时间】:2021-06-25 15:42:51
【问题描述】:

我正在执行 ajax 调用并从 DB 中获取大量结果,然后我使用 jquery 循环它们并创建一个简单的表。问题是循环将结果放在&lt;table&gt;&lt;tbody&gt; 之外,并在所有内容的顶部创建一个 tbody。我知道当前的结果是静态的,它只是为了测试,我知道 JS 是同步的,所以我不明白是什么问题。 我的代码:

$('#' + id).append('' +
   '<table class="documents_table">'+
   '<tbody">'+
       '<tr>'+
           '<th>number</th>'+
           '<th>Date</th>'+
           '<th> Cód</th>'+
           '<th> Terce</th>'+
       '</tr>'
);
$.each(data.responseJSON, function (index, value) {
   $('#' + id).append('' +
       '<tr">'+
           '<td>1</td>'+
           '<td>12/98/2021</td>'+
           '<td>1212</td>'+
           '<td>test it</td>'+
       '</tr>'
   );
}).$('#' + id).append(''+
   '</tbody>'+
   '</table>'
);

目前的输出如何:

<tbody"></tbody">
<table class="documents_table">
  <tbody>
    <tr>
      <th>number</th>
      <th>Date</th>
      <th> Cód</th>
      <th> Terce</th>
    </tr>
  </tbody>
</table>
<tr>
  <td>1</td>
  <td>12/98/2021</td>
  <td>1212</td>
  <td>test it</td>
</tr>
<tr>
  <td>1</td>
  <td>12/98/2021</td>
  <td>1212</td>
  <td>test it</td>
</tr>
<tr>
  <td>1</td>
  <td>12/98/2021</td>
  <td>1212</td>
  <td>test it</td>
</tr>
.........

【问题讨论】:

  • 将 ' 替换为 ' 。
  • @SebastianSimon 我并不惊讶有重复。知道问题(jquery 自动关闭标记)肯定会帮助 OP 进行搜索。我怀疑 OP 会搜索“未添加的行”,因为这不是他们的主要问题(尽管原因是相同的,所以是的,一个现有的答案,但是一个不同的问题)

标签: javascript html jquery ajax


【解决方案1】:

发生的事情是 jquery “有帮助”(tm)。

当您附加 &lt;table&gt; 时,它会“有效地”为您关闭标签,因此实际上会输出 &lt;table&gt;&lt;/table&gt;

使用单个字符串构建整个表格,然后在末尾添加一个 .append

var html = 
   '<table class="documents_table">'+
   '<tbody">'+
       '<tr>'+
           '<th>number</th>'+
           '<th>Date</th>'+
           '<th> Cód</th>'+
           '<th> Terce</th>'+
       '</tr>';

$.each(data.responseJSON, function (index, value) {
   html +=
       '<tr>'+
           '<td>1</td>'+
           '<td>12/98/2021</td>'+
           '<td>1212</td>'+
           '<td>test it</td>'+
       '</tr>';
}).

html += 
   '</tbody>'+
   '</table>';

$('#' + id).append(html);

【讨论】:

  • 你复制了同样的错字,所以它不是表格元素,不会被添加。
  • @Grumpy 好地方,会解决它 - 但这不是问题的真正问题。此外,它仍然可以在至少一个浏览器中运行:jsfiddle.net/4kLpunft
  • 该死的,我快疯了!非常感谢,它工作得很好,最“愚蠢”的事情是我之前像你说的那样做过。愚弄我,我想它已经编码了太多小时了!非常感谢,救命!
  • @freedomn-m 你说对了,是的,表格将使用结束标签生成,但是拼写错误不允许您添加行,如果没有拼写错误,行将被添加。使用追加,您始终可以将行添加到表格中。
  • @Grumpy 我很困惑你说的哪一点不起作用。 $("tbody").append('&lt;tr"&gt;&lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;') 与完整的表字符串一样工作。 jsfiddle.net/qwaL4to1 “不允许您添加行”,但它确实可以。检查小提琴:)
猜你喜欢
相关资源
最近更新 更多
热门标签