比较同一类的两个表td并将内容复制到第二个表

时间:2019-06-03 21:11:14

标签: jquery

我有两个桌子。

我想比较两个表,如果td具有相同的类(例如id-1 == id-1),我想从第一个table的第二个td复制并替换为第二table,第一td

$('.table1 tr td:first-child').each(function() {
  var firstTableClass = $(this).attr('class');
  $('.table2 tr td:first-child').each(function() {
    if ($(this).attr('class') === firstTableClass) {
      $(this).html($('.table1 tr td:last-child').html());
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table1" border="1">
<caption>Table 1</caption>
  <tr>
    <td class="id-1">1</td>
    <td>Name</td>
  </tr>
  <tr>
    <td class="id-2">2</td>
    <td>Name 2</td>
  </tr>
</table>

<table class="table2" border="1">
<caption>Table 2</caption>
  <tr>
    <td class="id-1">1</td>
    <td>2019</td>
  </tr>
  <tr>
    <td class="id-2">2</td>
    <td>2018</td>
  </tr>
</table>

问题是只能复制所有td中的名字。

我希望表2具有此结果

<table class="table2" border="1">
  <tr>
    <td class="id-1">Name</td>
    <td>2019</td>
  </tr>
  <tr>
    <td class="id-2">Name 2</td>
    <td>2018</td>
  </tr>
</table>

有什么想法吗?

这里是jsfiddle

谢谢!

1 个答案:

答案 0 :(得分:0)

如评论中所述:问题是您总是在最内层循环中抓住第一个tr中的第一个table

为每次迭代添加一个计数器并为:eq()使用tr选择器应该可以解决问题。

$('.table1 tr td:first-child').each(function() {
  var firstTableClass = $(this).attr('class');
  var i = 0;
  $('.table2 tr td:first-child').each(function() {
    if ($(this).attr('class') === firstTableClass) {
      $(this).html($('.table1 tr:eq(' + i + ') td:last-child').html());
    }
    i++;
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table1" border="1">
  <caption>Table 1</caption>
  <tr>
    <td class="id-1">1</td>
    <td>Name</td>
  </tr>
  <tr>
    <td class="id-2">2</td>
    <td>Name 2</td>
  </tr>
</table>

<table class="table2" border="1">
  <caption>Table 2</caption>
  <tr>
    <td class="id-1">1</td>
    <td>2019</td>
  </tr>
  <tr>
    <td class="id-2">2</td>
    <td>2018</td>
  </tr>
</table>

https://jsfiddle.net/feonsa9c/ <-在这里摆弄