单击“+”按钮时,我的表行正在动态生成。当我填充字段并单击“提交”按钮(“+”旁边)时,我的JSON会显示到控制台,如下图所示。
当我生成JSON时,我想要排除未填充的行(在本例中为第3行)。另外,我想要排除第1列(由3个按钮组成)。
正如我们所看到的,JSON数据包含许多“\ n”和\ t“,这很烦人。
我通过参考一些Stack Overflow页面编写了以下代码。
function createJSON(){
var myJSON = { Key: [] };
var headers = $('table th');
$('table tbody tr').each(function(i, tr){
var obj = {},
$tds = $(tr).find('td');
headers.each(function(index, headers){
obj[$(headers).text()] = $tds.eq(index).text();
});
myJSON.Key.push(obj);
});
console.log(JSON.stringify(myJSON));
}
答案 0 :(得分:2)
未填充的行包含<input>
个元素。您可以使用排除它们的选择器。
$('table tbody tr:not(:has(input))').each(...)
您可以使用.trim()
删除标题周围的所有换行符和其他空白字符:
headers.each(function(index, headers){
obj[$(headers).text().trim()] = $tds.eq(index).text();
});
要跳过第一列,您可以在选择器中使用:gt(0)
:
var headers = $('table th:gt(0)');
var $tds = $(tr).find('td:gt(0)');