将选定表格行中的输入字段推入数组以循环

Posted

技术标签:

【中文标题】将选定表格行中的输入字段推入数组以循环【英文标题】:Push input fields from selected table row into array to loop through 【发布时间】:2020-09-12 21:12:26 【问题描述】:

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

我是这样做的:

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 on every line):

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】:
  const rowList = [...document.querySelectorAll('tr')]
  const inputList = rowList.filter(row => row.firstElementChild.firstElementChild.checked).map(row => 
      return [...row.querySelectorAll('input')]
  )
  console.log(inputList)

【讨论】:

感谢您的回答。但我需要检查表行中的输入字段:)。不是复选框。 Gotcha 将修复 @Lupin 变了,让我知道情况如何。 我试试看:)。

以上是关于将选定表格行中的输入字段推入数组以循环的主要内容,如果未能解决你的问题,请参考以下文章

将输入字段推送到数组并循环遍历

使用angular js根据下拉列表中的选定输入隐藏表单中的字段

如何获取表格行中的所有 HtmlInputText 控件?

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组

将对象推入javascript深拷贝还是浅拷贝中的数组?

如何使用文本字段将数字输入数组(swift3)