JSON:
{"12":{"matId":"12","matchdatetime":"22/12<br>23:59","leaguename":"ASIAN CHAMPIONSHIP (IN IRAN)","teamaname":"Chinese Taipei",
"teambname":"Japan","player":{"1":{"name":"John","playtyID":"7","sb":"1"},"2":{"name":"Mat",
"playtyID":"4"}}}}
i would like to use json data above to produce table like below by javascript:
Table 1
MY CODE:
var company = {"1":"A","2":"B","4":"C","8":"D"};
var data = {"12":{"matId":"12","matchdatetime":"22/12<br>23:59","leaguename":"ASIAN CHAMPIONSHIP (IN IRAN)","teamaname":"Chinese Taipei",
"teambname":"Japan","player":{"1":{"name":"John","playtyID":"7","sb":"1"},"2":{"name":"Mat",
"playtyID":"4"}}}};
var str =[];
var count = $.map(data, function(n, i) { return i; }).length;
var no = 1;
str.push('<table width="750px" border="0" cellpadding="1" cellspacing="1" class="om" id="tbl_data" name="tbl_data" >');
str.push('<tr>');
str.push('<th>No</th>');
str.push('<th>date</th>');
str.push('<th>league</th>');
str.push('<th>home</th>');
str.push('<th>away</th>');
str.push('<th>player</th>');
$.each(company, function(id, name){
str.push('<th>'+name+'</th>');
});
str.push('<th>function</th>');
str.push('</tr>');
if(count > 0){
$.each(data, function(index, value){
var rowspan = $.map(value['player'], function(n, i) { return i; }).length;
if(rowspan > 0){
str.push('<tr>');
str.push('<td rowspan='+rowspan+'>'+no+'</td>');
str.push('<td rowspan='+rowspan+'>'+value["matchdatetime"]+'</td>');
str.push('<td rowspan='+rowspan+'>'+value["leaguename"]+'</td>');
str.push('<td rowspan='+rowspan+'>'+value["teamaname"]+'</td>');
str.push('<td rowspan='+rowspan+'>'+value["teambname"]+'</td>');
$.each(company, function(id, name){
if (value['player'][id] != undefined){
str.push('<td rowspan='+rowspan / rowspan+'>'+value['player'][id]['name']+'</td>');
str.push('<td rowspan='+rowspan / rowspan+'></td>');
str.push('</tr>');
}else{
str.push('<td rowspan='+rowspan+' bgcolor="#FF0000"></td>');
}
});
if(no == "1"){
str.push('<td rowspan='+rowspan+'>');
str.push('</td>');
}
no ++;
str.push('</tr>');
}
});
}else{
str.push('<tr>');
str.push('</tr>');
}
str.push('</table>');
return_data = str.join("");
$('#matchInfo').css({'top':30,'position':'absolute','text-align':'center'});
$('#matchInfo').html(return_data);
$('#matchInfo').show();
But the above code produce the table below:
How can i modified my code to produce the table as table 1?? Thank You
Live Demo : http://jsfiddle.net/U453N/32/


string. I suggest you to append object. ie.var table = $('<table/>');and appendtr/tdaccordingly.