如何使用jQuery将tr编号分配并循环为id?

How do I assign, and loop, the tr number as id using jQuery?

提问人:Tariq Jaziri 提问时间:5/14/2023 最后编辑:David ThomasTariq Jaziri 更新时间:5/14/2023 访问量:40

问:

我想计算表格中的行,然后根据该行的编号为中的每一行分配一个 ID 号。<tr><table><table>

我是这样计算的:

var currentIndex = $('table tbody tr').length

我得到了行数;然后,当我尝试遍历这些行时,它将所有行中的 id 更改为相同的 id。

例如,我需要使第 1 行为 is,第 2 行为 is ,以此类推。id1id2

function generateId() {

    for (i = 0; i < $('table tbody tr').length; i++) {
        console.log('Hello World', + i -1);
        $('table  tbody tr td :input').attr('id', + i).attr('name', + i).prop('class', 'form-control form-control-sm form-control-solid formInput-' + i);
        //$('table tbody tr td :input').attr('name', + i);
        //$('#table tbody tr td :input').attr('class', 'form-control form-control-sm form-control-solid' + i);
    }

任何想法??!!

jQuery 循环

评论

0赞 OldPadawan 5/14/2023
你如何构建这张表?从查询/数据库?
0赞 Tariq Jaziri 5/14/2023
jquery,我做以下事情,通过jQuery添加一个新的tr,每次我需要关联一个动态id,并且我需要序列化id时,即使我删除了一行,我也会做一个函数来计算行,并在删除或添加后分配id。 我希望我清楚:)
0赞 Developer 5/14/2023
@TariqJaziri我已经更新了代码,答案。试试吧
0赞 David Thomas 5/14/2023
您忘记添加元素的 HTML。<table>

答:

0赞 Carsten Løvbo Andersen 5/14/2023 #1

你可以这样做:

$('table  tbody tr td :input').attr("id",function() {
  return "idprefix"+$('table  tbody tr td :input').index($(this));
});

此外,不建议将 id 设置为数字。

演示

$('table  tbody tr td :input').attr("id",function() {
  return "idprefix"+$('table  tbody tr td :input').index($(this));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>
        <input />
      </td>
    </tr>
    <tr>
      <td>
        <input />
      </td>
    </tr>
    <tr>
      <td>
        <input />
      </td>
    </tr>
    <tr>
      <td>
        <input />
      </td>
    </tr>
  </tbody>
</table>

0赞 Developer 5/14/2023 #2

根据行数为每一行提供 id。你可以这样做:-

const rows = $('table tbody tr');
for (i = 0; i < rows.length; i++) {
   let row = $(rows)[i];
   let input = $(row).children('td').children('input');
   $(row).attr('id', i+1);
   $(input).attr('id', i+1);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
    <thead>
      <th>#</th>
      <th>First Name</th>
    </thead>
    <tbody>
      <tr>
        <td>01</td>
        <td>John</td>
        <td><input type="text" /></td>
      </tr>
      <tr>
        <td>02</td>
        <td>John</td>
        <td><input type="text" /></td>
      </tr>
      <tr>
        <td>03</td>
        <td>John</td>
        <td><input type="text" /></td>
      </tr>
    </tbody>
  </table>

评论

0赞 Tariq Jaziri 5/14/2023
我需要另一件事,我在 TR 的每个 TD 中都有输入,我需要将 TR 的相同 ID 分配给 TR 下的所有输入,我怎么能做到呢?
0赞 Developer 5/14/2023
@TariqJaziri 我们也可以为输入字段提供 id。但请记住,Id 在页面中应该是唯一的。这是一个很好的做法。因此,如果要为多个事件提供相同的 id,请不要使用 id,而是使用相同的类。您可以对多个元素使用同一个类
0赞 Tariq Jaziri 5/14/2023
当然,我知道它必须是唯一的,我会在行号之前添加一些引用来解释每个元素,您能否更新代码以让我知道如何将 ID 号分配给输入!
0赞 Developer 5/14/2023
@TariqJaziri Oky,我会更新它。
0赞 Developer 5/14/2023
@TariqJaziri 我已经根据您的要求更新了代码。试试吧