我想通过几个按钮实现动态添加,删除表行.然后把其中输入的值取出来.但是取值的时候他老是报错.
错误:'rows[...].cells[...].childNodes' 为空或不是对象 <body>
<table border=1 id="tbl" align="center">
</table>
<!-- 这是两个按钮作用分别是添加和删除 -->
<table align="center">
<tr>
<td> <input type="button" value="添加一条新的货物记录" onclick="addRow()"> </td>
<td> <input type="button" value="删除一条新的货物记录" onclick="deleteRow()"></td>
<td> <input type="button" value="保存货物记录" onclick="save()"></td>
</tr>
</table>
</body>
<script language="javascript">
<!--
var tb1=document.getElementById('tbl')
function save(o){
var tb1=document.getElementById('tbl'); for(var i=0;i<tb1.rows.length;i++){
var message = "";
for(var j=0;j<4;j++){
message += tb1.rows[i].cells[j].childNodes[0].value; }
alert(message);
}
return;
}
function del(o){
var tb1=document.getElementById('tbl')
if(tbl.rows.length ==1) {
alert("您至少应该有一条货物记录");
return
}
tb1.deleteRow(o.parentNode.parentNode.rowIndex)
} function addRow(){
<!-- 定义一个newTr对象,他是tb1的新差入的行,并有一个newTd对象在其内部 -->
var newTr=tbl.insertRow(),newTd
var text="<input type='text' id ='f' name='f'>";
var cc="<input type='button' value='删除此条货物记录' name='B' onclick='del(this)'>";
<!-- 添加单元格 -->
var tbody=tb1.childNodes[0];
tbody.appendChild(tbody);
var newTr,newTd;
var i,colnum=5;
newTr=document.createElement("tr");
tbody.appendChild(newTr);
for(i=0;i<colnum;i++)
{
newTd=document.createElement("TD");
newTr.appendChild(newTd);
newTd.innerHTML=text;
if(i==4){
newTd.innerHTML=cc;
}
}
}
<!-- 删除行 -->
function deleteRow(){
<!-- 如果此时的tb1对象的rows长度不为0,就执行table对象的一个删除末尾行的方法,此行的行号为last=length-1 -->
if(tbl.rows.length ==1) {
alert("您至少应该有一条货物记录");
return
}
tbl.deleteRow(tbl.rows.length - 1)
}//-->
</script>
错误:'rows[...].cells[...].childNodes' 为空或不是对象 <body>
<table border=1 id="tbl" align="center">
</table>
<!-- 这是两个按钮作用分别是添加和删除 -->
<table align="center">
<tr>
<td> <input type="button" value="添加一条新的货物记录" onclick="addRow()"> </td>
<td> <input type="button" value="删除一条新的货物记录" onclick="deleteRow()"></td>
<td> <input type="button" value="保存货物记录" onclick="save()"></td>
</tr>
</table>
</body>
<script language="javascript">
<!--
var tb1=document.getElementById('tbl')
function save(o){
var tb1=document.getElementById('tbl'); for(var i=0;i<tb1.rows.length;i++){
var message = "";
for(var j=0;j<4;j++){
message += tb1.rows[i].cells[j].childNodes[0].value; }
alert(message);
}
return;
}
function del(o){
var tb1=document.getElementById('tbl')
if(tbl.rows.length ==1) {
alert("您至少应该有一条货物记录");
return
}
tb1.deleteRow(o.parentNode.parentNode.rowIndex)
} function addRow(){
<!-- 定义一个newTr对象,他是tb1的新差入的行,并有一个newTd对象在其内部 -->
var newTr=tbl.insertRow(),newTd
var text="<input type='text' id ='f' name='f'>";
var cc="<input type='button' value='删除此条货物记录' name='B' onclick='del(this)'>";
<!-- 添加单元格 -->
var tbody=tb1.childNodes[0];
tbody.appendChild(tbody);
var newTr,newTd;
var i,colnum=5;
newTr=document.createElement("tr");
tbody.appendChild(newTr);
for(i=0;i<colnum;i++)
{
newTd=document.createElement("TD");
newTr.appendChild(newTd);
newTd.innerHTML=text;
if(i==4){
newTd.innerHTML=cc;
}
}
}
<!-- 删除行 -->
function deleteRow(){
<!-- 如果此时的tb1对象的rows长度不为0,就执行table对象的一个删除末尾行的方法,此行的行号为last=length-1 -->
if(tbl.rows.length ==1) {
alert("您至少应该有一条货物记录");
return
}
tbl.deleteRow(tbl.rows.length - 1)
}//-->
</script>
解决方案 »
- 求教一个javascript的构造函数的问题?
- 打开的模态窗口中,刷新会打开新的窗口,如何让刷新不打开新窗口(IE8)?
- 包含特殊字符的字符串变量怎样变为转义字符??
- 哪里有js封装的类似VB中的msgbox,出现是层,而不是alert那样的消息.
- 请问在javascript里面可以调用javabean吗?如果可以,怎样调用呢??
- 有个问题,如何在TextBox 中显示HTML文本而不是源码
- 哪位高手来给讲讲这个用法。
- eclipse 里jquery代码提示问题
- 求大神解释下以下IE获取滚动条高度的方法为何不可!
- <a href="javascript:" _fcksavedurl="javascript:">
- 关于Aptana不能调试的问题
- 正则表达式牛人请进
var tb1=document.getElementById('tbl');
var l = tb1.rows.length;
for(var i = 1;i < l;i += 2){ //i++ ======>>> i += 2
var message = "";
for(var j = 0;j < 4;j++){
message += tb1.rows[i].cells[j].childNodes[0].value; }
alert(message);
}
return;
}
var newTr=tbl.insertRow()
newTr=document.createElement("tr");
这两句重复
CSDN的兄弟真是够热心了.