2016-12-08 28 views
-1

私はチェックボックスを使用してテキストボックスを削除するjavascriptを試みています。ここではJavascriptを次のとおりです。私は未定義またはnull参照のプロパティ「のchildNodes」を取得するエラーはできなくなっています理由はここにプロパティ 'childnodes'を取得できません

function deleteRowFromTable(tableID) { 
    try { 
     var table = document.getElementById(tableID); 
     var rowCount = table.rows.length; 
     alert(rowCount); 
     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) { 
       if (rowCount <= 2) { 
        alert("Cannot delete all the rows."); 
        break; 
       } 
       table.deleteRow(i); 
       rowCount--; 
       i--; 
      } 

は私のhtmlが

<div class="col-md-4" style="overflow-x:auto;"> 

     <br> 
<input class="col-md-3" type="button" value="Delete" onclick="deleteRowFromTable('tableId3')"> 
     <br><br> 
     <table class="col-md-6" id="tableId3"> 
      <tr> 
       <th></th> 
       <th>table 3</th> 
      </tr> 

      <tr> 
       <!--     <td align="center"><input type="checkbox" name="checkbox"></td> 
            <td><input name="name-1" id="name-1" value=""/></td>--> 
      </tr> 

     </table> 

    </div> 

でアドバイスをしてください?

+1

あなたのTRには実際に細胞が含まれていませんか? – moopet

+0

あなたが参照しているTRは、私がチェックボックスを正しくコメントしたものだと思いますか?チェックボックスを手動で追加できるはずのJSがあるため、最初のチェックボックスを削除しました – Newbph

答えて

1

このライン:

var chkbox = row.cells[0].childNodes[0]; 

row.cells[0]がオブジェクトを返すことを前提としています。しかし、行内にセルがない場合(たとえば、HTMLの2行目にセルがない場合)、undefinedが返されます。 .childNodesundefinedです。

+0

手動でチェックボックスを追加する必要がある別のJSを持っているため、最初のチェックボックスを削除しましたが、 。 – Newbph

+0

@Newbph:何も変わらない。なぜあなたはエラーを取得していますか? 'row.cells [0]'はセルオブジェクトを返さないためです。だからあなたはそれがなぜであるか見る必要があります。コードが有効なものであれば、コード内でコードを許可する必要があります。 –

+0

ありがとう!この方法を学ぶ方がはるかに良いです。私はなぜエラーを取得しているのか理解しているようです。私がテーブルに持っていた余分なのためです。 – Newbph

関連する問題