将行添加到表的tbody时出错

时间:2011-06-12 00:49:32

标签: javascript jquery html

这是我的代码。   我的问题与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>

3 个答案:

答案 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>'
);