1

我的 phtml 文件中有一个表格。

<table width="700" class="detais" cellpadding="10px;">
<tr><td></td><td></td></table>

我也有一个下拉菜单,在更改此下拉菜单时,它会调用一个 javascript

function filterbyaptno(){
     var idno = document.getElementById("aplist").value;
      $.ajax({
        url: 'address',
        type: 'POST',                    
        data:"idno="+idno,
         success:function(result) { 
            var numRecords = parseInt(result.rows.length);
            if(numRecords>0)
            {
              for(var i = 0; i<numRecords;i++)
               {
                 var html ='<div class="support"><table><tr>      <td>'+result.row[i].firstname+'</td>                        
               +'<td>'+result.rows[i].advice+'</td>'         
               +'<td>'+result.rows[i].customdata+'</td><tr></table></div>' 
               }
           $('.detais').replaceWith(html);//am trying to change the table content
             }
         });
   } 

但是如果结果有更多记录会发生什么,它只给我最后一条记录。而且,如果我再次更改下拉菜单,它永远不会起作用。谁能帮助我如何做到这一点?javascript中有什么方法可以根据控制器的响应修改表格的内容;

4

2 回答 2

2

当你循环结果时,你:

var html = ..

它替换了html变量中已经存在的内容。

在 for 循环外声明var html并始终在循环内附加 ( html += ...)。

您可能还想<div class="support"><table>在循环外设置容器,只在其中添加行。

于 2012-09-12T12:13:40.010 回答
0

您在循环html的每次迭代中重新分配变量的值,for这意味着在每次迭代中,您都用新值替换先前的值,而不是连接先前的值和新值。

将您的代码修改为如下所示:

if (numRecords > 0) {
    var html = '';
    for (var i = 0; i < numRecords; i++) {
        html += '<div class="support"><table><tr>      <td>' + result.row[i].firstname + '</td>' + ' < td > ' + result.rows[i].advice + ' < /td>' + '<td>' + result.rows[i].customdata + '</td > < tr > < /table></div > '
    }
    $('.detais ').replaceWith(html); //am trying to change the table content
}
于 2012-09-12T12:16:12.840 回答