我目前有一个添加和删除行。我已经为div
的设计元素设置了它,但是当我尝试删除一行时它没有删除,我想知道你是否能够提供帮助。
请点击此处查看HTML代码!
<script language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[0].cells[i].innerHTML;
//alert(newcell.childNodes);
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;
}
}
}
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[5].childNodes[0];
if (null != chkbox && true == chkbox.checked) {
if(rowCount <= 1) {
alert("Cannot delete all the rows.");
break;
}
table.deleteRow(i);
rowCount--;
i--;
}
}
}catch(e) {
alert(e);
}
}
</script>
答案 0 :(得分:1)
此:
var chkbox = row.cells[5].childNodes[0];
应该是这样的:
var chkbox = row.cells[5].children[0].children[0];
你拥有它的方式,你指的是 TextNode 。
当您将其更改为.children[0]
时,您会获得包含输入的DIV
元素,因此您需要获取DIV
的第一个子元素。
答案 1 :(得分:0)
您需要更改此行:
var chkbox = row.cells[5].childNodes[0];
为:
var chkbox = row.querySelector('input[type=checkbox]');
答案 2 :(得分:0)
你的问题在于引用deleteRow
中的chkbox元素,这里:
var chkbox = row.cells[5].childNodes[0];
如果遇到问题,请尝试使用console.log
跟踪潜在危险品行的代码。
在此示例中,console.log(chkbox)
返回包装div,而不是预期的复选框。所以改为:
var chkbox = row.cells[5].childNodes[0].childNodes[0];
忘记整个长树遍历
var chkbox = row.querySelector('input[type=checkbox]');
查看工作小提琴http://jsfiddle.net/SpacePineapple/D77Dz/2/
P.S我看到你试图实现占位符(默认值)。您可能需要查看占位符
的html5规范