这是我的代码。 我的问题与for循环中的append函数有关。传递给函数的字符串未正确解析,我收到错误。我该如何纠正?
谢谢!
function getDetailPopUp(detailBy)
{
$.getJSON('/index.cfm/reports/productivity/getDetailPopUp', {
rollUpType:'byUser'
}, function(result){
for (i=1;i<=result.length;i++)
{
$('#detailTable > tbody:last').append('<tr><td>'+ result[i][0]+ '</td><td>'+
result[i]][1]+ '</td><td>'+ result[i][2]+'</td><td>'+result[i][3]+ '</td>
<td>'+result[i][4]+'</td><td>'+result[i][5]+'</td><td>'+result[i][6]+'
</td><td>'+result[i][7]+'</td><td>'+result[i][8]+ '</td></tr>');
}
$("#details").fadeIn();
});
}
<div id="details" width=80%>
<table id="detailTable" style="height:100px; overflow:scroll">
<thead>
<th>Calls</th>
<th>Col2</th>
<th>Col3</th>
<th>Col4</th>
<th>Col5</th>
<th>Col6</th>
<th>Col7</th>
<th>Col8</th>
<th>Col9</th>
</thead>
<tbody>
</tbody>
</table>
</div>
答案 0 :(得分:1)
传递给函数的字符串 没有正确解析,我是 得到错误。
你不能在字符串中包含换行符:
$('#detailTable > tbody:last').append('<tr><td>'+ result[i][0]+ '</td><td>'+
result[i]][1]+ '</td><td>'+ result[i][2]+'</td><td>'+result[i][3]+ '</td>
--> <td>'+result[i][4]+'</td><td>'+result[i][5]+'</td><td>'+result[i][6]+'
</td><td>'+result[i][7]+'</td><td>'+result[i][8]+ '</td></tr>');
你有result[i]][1]
,还有]
。
这将有效:
$('#detailTable > tbody:last').append(
'<tr><td>'+ result[i][0]+ '</td><td>'+
result[i][1]+ '</td><td>'+ result[i][2]+'</td><td>'+result[i][3]+ '</td>'+
'<td>'+result[i][4]+'</td><td>'+result[i][5]+'</td><td>'+result[i][6]+
'</td><td>'+result[i][7]+'</td><td>'+result[i][8]+ '</td></tr>'
);
虽然为了便于阅读,您可以更好地使用:
$('#detailTable > tbody:last').append(
'<tr>' +
'<td>' + result[i][0] + '</td>' +
'<td>' + result[i][1] + '</td>' +
'<td>' + result[i][2] + '</td>' +
'<td>' + result[i][3] + '</td>' +
'<td>' + result[i][4] + '</td>' +
'<td>' + result[i][5] + '</td>' +
'<td>' + result[i][6] + '</td>' +
'<td>' + result[i][7] + '</td>' +
'<td>' + result[i][8] + '</td>' +
'</tr>'
);
答案 1 :(得分:1)
试试这个。
$('#detailTable > tbody:last').append(
'<tr><td>'+ result[i][0]+ '</td><td>'+
result[i][1]+ '</td><td>'+ result[i][2]+'</td><td>'+result[i][3]+ '</td>'+
'<td>'+result[i][4]+'</td><td>'+result[i][5]+'</td><td>'+result[i][6]+
'</td><td>'+result[i][7]+'</td><td>'+result[i][8]+ '</td></tr>'
);
我建议你使用模板来构建这种类型的标记。有许多图书馆可供使用,如Underscore。
答案 2 :(得分:1)
我相信thirtydot发现了你的问题。字符串中的换行符以及额外的']'。
我还建议在你的数组上使用javascript的'join'函数,而不是明确地写出所有这些。
$('#detailTable > tbody:last').append(
'<tr>' +
'<td>' + result[i].join('</td><td>') + '</td>'
'</tr>'
);