我已经创建了一个将表转换为JSON对象的应用程序,应用程序工作正常,但问题是首先出现一个空数组用于正文密钥。 任何人都可以告诉我一些
{"head":["Person Name","Person Name","Points","Price","Tax"],"body":[[],["Jill","Smith","50","150","41"],["Eve","Jackson","94","250","81"],["John","Doe","80","950","412"],["Adam","Johnson","67","750","941"]]}
我的脚本在下面给出
$('#convert-table').click( function() {
try{
var myTable = [];
var myTr =[];
$('#example-table tr').each(function (i, tr) {
var myTd =[];
$('th', tr).each(function(j, th) {
myTr.push($.trim(th.innerHTML));
});
$('td', tr).each(function(j, td) {
if(td.innerHTML.indexOf("span") != -1){
var text = $(this).closest('td').find('span').text();
myTd.push($.trim(text));
}
else{
myTd.push($.trim(td.innerHTML));
}
});
myTable.push(myTd);
});
var headObj ={
head:myTr,
body:myTable
};
答案 0 :(得分:4)
尝试使用条件检查数组是否为空
已更新:因为对于第一个TR,您只有th而不是td,这就是为什么您的数组为空。
例如
if(myTd.length > 0)
myTable.push(myTd);
答案 1 :(得分:0)
问题是因为在第一个<tr>
中您只有<th>
个标签,但仍然推送到myTable
,这就是空数组的来源。
只有在你有实际myTable
推送时才推到<td>
。
您可以通过检查当前行中没有任何<tr>
标记或检查myTr
数组是否已被推送到表示您已通过该行的行来执行此操作其中<th>
。