0
私は、チェックボックスを使用して行を削除しようとしているが、私が彼らのために、デフォルトのテーブルの行を持っていないだけでTypeError: Cannot read property childNodes of undefined
チェックボックスを使用して行を削除しますか?
function deleteRowFromTable(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length - 1;
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) {
table.deleteRow(i);
rowCount--;
i--;
}
}
} catch (e) {
alert(e);
}
}
function addRowToTable(tableID) {
var table = document.getElementById(tableID);
var jobValue = jobValue + 1; //increase personVal by 1
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
// var colCount = table.rows[0].cells.length;
//generate textbox here with dynamic id by adding jobVal at the end of id and '-'(dash) is used to split id later
var newcell = row.insertCell(0);
newcell.innerHTML = "<input type='checkbox' name='chk' />";
var newcell = row.insertCell(1);
newcell.innerHTML = "<input type='text' name='txtLineofBusiness-" + jobValue + "' id='txtLineofBusiness-" + jobValue + "' class='txtLineofBusiness' required/>";
var newcell = row.insertCell(2);
newcell.innerHTML = "<input type='text' name='txtNofUnits-" + jobValue + "' id='txtNofUnits-" + jobValue + "' class='txtNofUnits' required/>";
var newcell = row.insertCell(3);
newcell.innerHTML = "<input type='text' name='txtCapital-" + jobValue + "' id='txtCapital-" + jobValue + "' class='txtCapital' required/>";
var newcell = row.insertCell(4);
newcell.innerHTML = "<input type='text' name='txtEssential-" + jobValue + "' id='txtEssential-" + jobValue + "' class='txtEssential' required/>";
var newcell = row.insertCell(5);
newcell.innerHTML = "<input type='text' name='txtNonEssential-" + jobValue + "' id='txtNonEssential-" + jobValue + "' class='txtNonEssential' required/>";
}
<input type="button" value="Add Rows" onclick="addRowToTable('tableId')">
<input class="col-md-2" type="button" value="Delete Row/s" onclick="deleteRowFromTable('tableId')">
<table id="tableId">
<thead>
<tr>
<th rowspan=2>#</th>
<th rowspan=2>Line of Business</th>
<th rowspan=2>No. of Units</th>
<th rowspan=2>Capitalization</th>
<th colspan="2">Gross /Sales Receipts </th>
</tr>
<tr>
<th>Essential</th>
<th>Non-essential</th>
</tr>
</thead>
</table>
エラーを返すようです。私は成功したいくつかの行を追加しようとしていますが、削除行は機能しません。助けてください。
を関数の。 – James
変数を複数回再宣言することはできません。したがって、 'var newcell'を1回だけ持つ必要があります。 'newcell'の残りの部分は同じ変数への参照にすぎません(つまり、それらはすべて同じです。' var X = 1'、後で 'X = 2' ... 2つの独立したXを値としません'X = 2'なので、' addRow() '関数は機能するか、はるかに小さな関数をコピーして貼り付けて、異なる内容のパターンをコピーしましたか? – zer00ne
addRow ()関数は動作し、複数の宣言も削除され、remove関数が機能しました。 – Newbph