javascript - 将 html 表中未选中的复选框行转换为 javascript 数组

标签 javascript jquery

我有一个 HTML 表格,每一行我都有一个复选框,一些带有文本的单元格和一个带有输入字段的单元格,我需要将除选择的行之外的所有行转换为 javascript 数组,所以我然后可以将数组传递给 ajax 并使用 PHP 进行处理。

这是我目前为止尝试过的

var TableData = new Array();

$('.kmg_admin_millesimal_buildings_table tr input[type=checkbox]:not(:checked)').each(function(row, tr) {

  TableData[row] = {

    "Codice": $(tr).find('td:eq(1)').text(),
    "Piano": $(tr).find('td:eq(2)').text(),
    "Interno": $(tr).find('td:eq(3)').text(),
    "Millesimi": $(tr).find('td').eq(4).find('input').val()

  }

});

TableData.shift();
TableData.pop();

console.log(TableData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="kmg_admin_millesimal_buildings_table">
<thead>
  <tr>
    <th class="text-center"> Escludi</th>
    <th class="text-center"> Codice</th>
    <th class="text-center"> Piano</th>
    <th class="text-center"> Interno</th>
    <th> Millesimi</th>
  </tr>
</thead>
<tbody class="kmg_admin_millesimal_buildings_table_body">
  <tr>
    <td class="text-center"><input type="checkbox" class="pippo"></td>
    <td class="text-center">4E</td>
    <td class="text-center">1</td>
    <td class="text-center">4E</td>
    <td><input type="text" class="km-millesimi" maxlength="6"></td>
  </tr>
  <tr>
    <td class="text-center"><input type="checkbox" class="pippo"></td>
    <td class="text-center">9N</td>
    <td class="text-center">2</td>
    <td class="text-center">9N</td>
    <td><input type="text" class="km-millesimi" maxlength="6"></td>
  </tr>
  <tr>
    <td class="text-center"><input type="checkbox" class="pippo"></td>
    <td class="text-center">2C</td>
    <td class="text-center">3</td>
    <td class="text-center">2C</td>
    <td><input type="text" class="km-millesimi" maxlength="6"></td>
  </tr>
</tbody>
<tfoot class="custom-table-footer">
  <tr>
    <td colspan="4" class="text-right"></td>
    <td class="km_total_millesimal_table font-green-sharp">0.00</td>
  </tr>
</tfoot>
<table>

错误是数组没有创建

最佳答案

问题是您的选择器针对的是输入,而不是表格行。你可以使用 parent() 来获取行,就像这样。您仍然需要删除 shift() 和 pop(),因为 thead 和 tfoot 中没有输入,所以不需要这些。

var TableData = new Array();

$('.kmg_admin_millesimal_buildings_table tr input[type=checkbox]:not(:checked)').each(function(row, input) {
  var tr = $(input).parent().parent()
  TableData[row] = {

    "Codice": $(tr).find('td:eq(1)').text(),
    "Piano": $(tr).find('td:eq(2)').text(),
    "Interno": $(tr).find('td:eq(3)').text(),
    "Millesimi": $(tr).find('td').eq(4).find('input').val()

  }

});

console.log(TableData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="kmg_admin_millesimal_buildings_table">
<thead>
  <tr>
    <th class="text-center"> Escludi</th>
    <th class="text-center"> Codice</th>
    <th class="text-center"> Piano</th>
    <th class="text-center"> Interno</th>
    <th> Millesimi</th>
  </tr>
</thead>
<tbody class="kmg_admin_millesimal_buildings_table_body">
  <tr>
    <td class="text-center"><input type="checkbox" class="pippo"></td>
    <td class="text-center">4E</td>
    <td class="text-center">1</td>
    <td class="text-center">4E</td>
    <td><input type="text" class="km-millesimi" maxlength="6"></td>
  </tr>
  <tr>
    <td class="text-center"><input type="checkbox" class="pippo"></td>
    <td class="text-center">9N</td>
    <td class="text-center">2</td>
    <td class="text-center">9N</td>
    <td><input type="text" class="km-millesimi" maxlength="6"></td>
  </tr>
  <tr>
    <td class="text-center"><input type="checkbox" class="pippo"></td>
    <td class="text-center">2C</td>
    <td class="text-center">3</td>
    <td class="text-center">2C</td>
    <td><input type="text" class="km-millesimi" maxlength="6"></td>
  </tr>
</tbody>
<tfoot class="custom-table-footer">
  <tr>
    <td colspan="4" class="text-right"></td>
    <td class="km_total_millesimal_table font-green-sharp">0.00</td>
  </tr>
</tfoot>
<table>

关于javascript - 将 html 表中未选中的复选框行转换为 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57514731/

相关文章:

javascript - 如何将 JSON 数据从服务器获取到 JavaScript 变量中

JavaScript 按降序排列日期的排序列表

jquery - 为什么 $(document).ready(function()... 在此示例中不起作用?

javascript - 使用 jquery 隐藏所有 li 标签

javascript - Jquery 帮助分页器和显示元素。

javascript - 使用socket.io时回调函数会阻塞主线程吗?

javascript - 从 react 组件的数组类型状态属性中弹出的正确方法?

javascript - Highcharts:动态(以编程方式)分配轴名称

javascript - 特定的 javascript 代码仅适用于警报语句

javascript - 单击按钮时获取显示在文本框中的日期