Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将html表中未选中的复选框行转换为javascript数组_Javascript_Jquery - Fatal编程技术网

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

将html表中未选中的复选框行转换为javascript数组,javascript,jquery,Javascript,Jquery,我有一个HTML表格,每行有一个复选框,一些单元格有文本,一个单元格有一个输入字段,我需要将所有的行转换成javascript数组,这样我就可以将数组传递给ajax并使用PHP进行处理 这就是我到目前为止所尝试的 var TableData=new Array(); $('.kmg_admin_millesimal_buildings_table tr input[type=checkbox]:not(:checked')。每个(函数(行,tr){ TableData[行]={ “Codice

我有一个HTML表格,每行有一个复选框,一些单元格有文本,一个单元格有一个输入字段,我需要将所有的行转换成javascript数组,这样我就可以将数组传递给ajax并使用PHP进行处理

这就是我到目前为止所尝试的

var TableData=new Array();
$('.kmg_admin_millesimal_buildings_table tr input[type=checkbox]:not(:checked')。每个(函数(行,tr){
TableData[行]={
“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)

埃斯库迪
科迪切
钢琴
内网
米利西米
4E
1.
4E
9N
2.
9N
2C
3.
2C
0

问题在于选择器的目标是输入,而不是表行。您可以使用
parent()
获取行,如下所示。您仍然需要删除shift()和pop(),因为thead和tfoot中没有输入,所以不需要这些输入

var TableData=new Array();
$('.kmg_admin_millesimal_buildings_table tr input[type=checkbox]:not(:checked'))。每个(函数(行,输入){
var tr=$(输入).parent().parent()
TableData[行]={
“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)

埃斯库迪
科迪切
钢琴
内网
米利西米
4E
1.
4E
9N
2.
9N
2C
3.
2C
0

我会一如既往地使用普通Javascript。给你:

var TableData=new Array();
foo.addEventListener('change',(e)=>{
//仅当更改来自复选框时才作出反应
if(e.target.matches('input.pippo')){
TableData=[…foo.queryselectoral('.kmg_admin_millesimal_buildings_table tr input[type=checkbox]:not(:checked)]
.map(输入=>{
设res=[…input.closest('tr').cells].map(cell=>(cell.textContent | | cell.children[0].value));
return{codice:res[1],piano:res[2],interno:res[3],millesimi:res[4]};
})
console.clear();
log(JSON.stringify(TableData));
}
})

埃斯库迪
科迪切
钢琴
内网
米利西米
4E
1.
4E
9N
2.
9N
2C
3.
2C
0

如果您只发布代码,而不是发布表的图像,这将很有帮助,这样想测试代码的人就不必编写所有标记来生成代码。此外,您需要告诉我们问题出在哪里。您有两行未选中。在
pop()
it之后,就有一行了。然后您
shift()
it,现在您有了一个空数组。这可能就是问题所在。嗨@iwrestledabence。我已经更新了问题谢谢你做了这些调整,@pippo。非常感谢它工作正常。抱歉,我仍然不善于识别javascript中的选择器。谢谢你的帮助