2010-01-04 30 views
1

我正在創建一個基於servlet結果的表,其中包含一個複選框,當複選框的checked屬性爲true時,表的底部會有一個按鈕,它需要調用一個remove函數,它從表中刪除特定的行,當jsp使用服務器標籤創建表時,該函數正在工作,但是當它使用jQuery .getJSON方法創建時,它不起作用。代碼是。無法從jQuery創建的表中刪除行

var contents=""; 
$.getJSON("trnReceipt?caseNo=21&insid="+cdid.text(),function(datalist) { 

    $.each(datalist, function(index, data) { 
     contents += '<tr><td><input type="hidden" id="txt_select'+index+'" name="txt_select'+index+'" value='+data.return_status+'></input><input type="checkbox" name="chk_select'+index+'" /></td><td><input type="hidden" name="txtInstrid'+index+'" value="'+data.Instrumentid+'"/>' + data.Instrumentid + '</td></tr>'; 
     index++; 
    }) 

    $('#tblDetails').append(contents); 
}) 

的JavaScript代碼刪除行:

function deleteRow(tableID) { 

    try { 
     var table = document.getElementById(tableID); 
     var rowCount = table.rows.length; 

     for(var i=0; i<rowCount; i++) { 
      var row = table.rows[i]; 
      var chkbox = row.cells[0].childNodes[0]; 

      if(null != chkbox && true == chkbox.checked) { 
       table.deleteRow(i); 
       rowCount--; 
       i--; 
      } 
     } 
    } catch(e) { 
     alert(e); 
    } 
} 

當我犯了一個錯誤?

+0

它是否不喜歡你的函數簽名與JavaScript API中的函數簽名相同的事實? – 2010-01-04 16:56:10

回答

0

td標籤中的第一個節點是隱藏字段,而不是複選框。因此,在來自getJson方法的行中,chkbox變量實際上並不是您的複選框,因此刪除行的條件將始終爲false。

只要你已經使用jQuery,可以考慮使用jQuery來進行實際的刪除。它會更短,實際上更不容易出錯。

+0

是的,這是正確的,我希望我將在未來 更加小心感謝指導傢伙。 – sansknwoledge 2010-01-04 17:08:45

2

您可以使用jQuery來刪除這樣的行:

$('#' + tableId + ' tr:has(td :checkbox:checked)').remove(); 

這將刪除包含一個選中的複選框中的所有行。

您的問題可能是您正在尋找錯誤的單元格。

+1

這很美。 – 2010-01-04 16:58:06