首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历表中的行

问遍历表中的行
EN

Stack Overflow用户
提问于 2017-12-14 16:12:46
回答 4查看 224关注 0票数 3

我有一个包含多个表行的表,每个td都有一个输入,我试图在表行中遍历,这样我就可以通过另一个输入来设置输入的值,它只对第一个表行起作用,如何为表中的所有行创建?我有一个按钮,当我执行一个新的tr时,它会附加一个tr,它不会在其中设置值,下面是我的代码:

​

代码语言:javascript
复制
$('.myFirstInput').closest('tr').find('.mySecondInput').val('1000');

$('button').click(function () {
    var tr = '<tr><td><input type="text" class="myFirstInput"</td>'+
             '<td><input type="text"></td>' +
             '<td><input type="text" class="mySecondInput"></td></tr>';
    $('tbody').append(tr);	
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </thead>
  <tbody>
    <tr>
      <td><input type="text" class="myFirstInput"></td>
      <td><input type="text"></td>
      <td><input type="text" class="mySecondInput"></td>
   </tr>
   <tr>
     <td><input type="text" class="myFirstInput"></td>
     <td><input type="text"></td>
     <td><input type="text" class="mySecondInput"></td>
   </tr>
   <tr>
     <td><input type="text" class="myFirstInput"></td>
     <td><input type="text"></td>
     <td><input type="text" class="mySecondInput"></td>
   </tr>
  </tbody>
</table>

<button>Append row</button>

​

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-12-14 16:17:16

您的问题是您正在使用is,这在HTML中必须是唯一的。将它们改为类,这应该会像预期的那样工作。

​

代码语言:javascript
复制
function addVal() {
  var elems = $('.myFirstInput').closest('tr').find('.mySecondInput');
  $.each(elems, function(s, e) {
  if($(e).val() === '') {
      $(e).val('1000');
   }
  });
}

$(document).ready(function() {
$('button').click(function () {
			var tr = '<tr><td><input type="text" class="myFirstInput"</td>'+
'<td><input type="text"></td>' +
'<td><input type="text" class="mySecondInput"></td></tr>';
			$('tbody').append(tr);
      addVal();
		});
    
    addVal();
    });
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </thead>
  <tbody>
    <tr>
      <td><input type="text" class="myFirstInput"></td>
      <td><input type="text"></td>
      <td><input type="text" class="mySecondInput"></td>
    </tr>
    <tr>
      <td><input type="text" class="myFirstInput"></td>
      <td><input type="text"></td>
      <td><input type="text" class="mySecondInput"></td>
    </tr>
    <tr>
      <td><input type="text" class="myFirstInput"></td>
      <td><input type="text"></td>
      <td><input type="text" class="mySecondInput"></td>
    </tr>
  </tbody>
</table>

<button>Append row</button>

​

票数 1
EN

Stack Overflow用户

发布于 2017-12-14 16:17:39

问题在于您使用的是id。根据定义,id应该是唯一的。当您的代码运行时,它只适用于它找到的id的第一项。只需将id更改为class就可以了(这部分)。

其次,看起来您正在动态地创建行(添加tr)。

​

代码语言:javascript
复制
$('.myFirstInput').closest('tr').find('.mySecondInput').val('1000');

$('button').click(function () {
    var tr = '<tr><td><input type="text" class="myFirstInput"</td>'+
'<td><input type="text"></td>' +
'<td><input type="text" class="mySecondInput"></td></tr>';
    $('tbody').append(tr);
    $('.myFirstInput').closest('tr').find('.mySecondInput').val('1000');
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<thead>
<th>1</th>
<th>2</th>
<th>3</th>
</thead>
<tbody>
<tr>
<td><input type="text" class="myFirstInput"></td>
<td><input type="text"></td>
<td><input type="text" class="mySecondInput"></td>
</tr>
<tr>
<td><input type="text" class="myFirstInput"></td>
<td><input type="text"></td>
<td><input type="text" class="mySecondInput"></td>
</tr>
<tr>
<td><input type="text" class="myFirstInput"></td>
<td><input type="text"></td>
<td><input type="text" class="mySecondInput"></td>
</tr>
</tbody>
</table>

<button>Append row</button>

​

票数 2
EN

Stack Overflow用户

发布于 2017-12-14 16:17:26

在同一个id中使用同名的多个document是不对的。使用class代替如下方式:

​

代码语言:javascript
复制
$('input.mySecondInput').each(function(i, el){
  $(el).val('1000');
});

$('button#btnAppendRow').click(function () {
  var tr = '<tr><td><input type="text" class="myFirstInput"</td>'+
  '<td><input type="text"></td>' +
  '<td><input type="text" class="mySecondInput"></td></tr>';
  $('tbody').append(tr);

  $('input.mySecondInput:last-child').val('1000');
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table>
  <thead>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </thead>
  <tbody>
    <tr>
      <td><input type="text" class="myFirstInput"></td>
      <td><input type="text"></td>
      <td><input type="text" class="mySecondInput"></td>
    </tr>
    <tr>
      <td><input type="text" class="myFirstInput"></td>
      <td><input type="text"></td>
      <td><input type="text" class="mySecondInput"></td>
    </tr>
    <tr>
      <td><input type="text" class="myFirstInput"></td>
      <td><input type="text"></td>
      <td><input type="text" class="mySecondInput"></td>
    </tr>
  </tbody>
</table>

<button id="btnAppendRow">Append row</button>

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47817754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档