2010-01-04 11 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); 
}) 

는 자바 스크립트 코드는 다음과 같습니다 내가 실수를하고 어디

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의 서명과 동일하다는 점이 마음에 들지 않습니까? –

답변

0

td 태그의 첫 번째 노드는 확인란이 아닌 숨겨진 필드입니다. 따라서 getJson 메서드에서 가져온 행에서 chkbox 변수는 실제로는 확인란이 아니므로 행을 삭제하는 기준은 항상 false입니다.

이미 jQuery를 사용하고 있다면 jQuery를 사용하여 실제 삭제를 고려하십시오. 훨씬 더 짧을 것이고 실제로 오류가 덜 발생합니다.

+0

네, 맞았습니다. 앞으로 더 조심 해야겠다. 감독들에게 감사드립니다. – sansknwoledge

2

이 같은 행을 삭제 jQuery를 사용할 수 있습니다

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

이 체크 체크 박스를 포함하는 모든 행을 삭제합니다.

아마도 잘못된 셀을보고있는 것이 문제 일 수 있습니다.

+1

이것은 아름답습니다. –

관련 문제