如何将表行序列化为json对象

如何将表序列化为json数组,以便每个数组元素都包含表示一个表行的json对象:

[ { name: "variable1", valuetostore: "ab", totaltype: "Lowest" }, { name: "variable2", valuetostore: "cd", totaltype: "Highest" } ] 

我尝试了下面的代码,但这会产生具有名称和值属性的对象,并且数组中的成员多于表行中的成员。

它还序列化了隐藏的第一行。 它是行添加的模板行,不应该在结果中使用。

 $(function() { $("#btnShow").on("click", function() { console.log($("#myForm").serializeArray()); }); }); 
   

您可以将nth-child选择器与n+2以仅选择tr> = 2:

 #myForm tbody tr:nth-child(n+2) 

但是,结果将不是每个对象都是行对象的对象数组。 结果将是一个对象数组,其中每个select / input / textarea本身就是一个对象。

您可以在trs上使用each()函数来遍历所有这些函数以获得预期结果。

以下是两个选项的示例:

 $(function() { $("#btnShow1").on("click", function() { console.log($("#myForm tbody tr:nth-child(n+2) textarea,#myForm tbody tr:nth-child(n+2) input,#myForm tbody tr:nth-child(n+2) select").serializeArray()); }); $("#btnShow2").on("click", function() { var ar = []; $("#myForm tbody tr:nth-child(n+2)").each(function() { rowData = $(this).find('input, select, textarea').serializeArray(); var rowAr = {}; $.each(rowData, function(e, v) { rowAr[v['name']] = v['value']; }); ar.push(rowAr); }); console.log(ar) }); });