将选定表行中的输入字段推入数组以遍历

时间:2020-05-26 06:19:56

标签: javascript jquery arrays loops foreach

我想将表(特定行)中的一些输入字段添加到数组中。稍后,我想遍历此数组。

我这样做是这样的:

let selectedTr = [];
let arr = [];

$('td input:checked').each(function() {
    selectedTr.push($(this).closest('tr'));
});

selectedTr.forEach((tr) => {
  td = tr.find('td:not(:first-child) input');

  td.each(function() {
    arr.push($(this));
  });
});

// Doesn't work if I define arr like above (error: arr.each is not a function, if I use `arr = $('form input')` it works perfectly for example)
arr.each(function() {
    ...
});

以下是jsfiddle的简短演示:https://jsfiddle.net/a4fpqynx/ PS:在jsfiddle中,我得到:如果使用console.log(),则无法克隆错误对象。

arr显示类似(每行S):

0 S [<input type="text">] (1)
1 S [<input type="text">] (1)
...

但是我需要(只需一个S)

S
0 [<input type="text">]
1 [<input type="text">]
...

所以我可以使用arr.each。 PS:arr.each(function() {})在另一个函数中,该函数从多个文件中调用以检查输入字段。我将其用于登录,表格和其他形式。 我该如何实现?

1 个答案:

答案 0 :(得分:0)

  const rowList = [...document.querySelectorAll('tr')]
  const inputList = rowList.filter(row => row.firstElementChild.firstElementChild.checked).map(row => {
      return [...row.querySelectorAll('input')]
  })
  console.log(inputList)