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これは、変数にすでにあるものを置き換えます。

var htmlforループの外側で宣言し、常に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 に答える