JS新手,想做一个动态增删Table,使用cloneNode()方法复制上一行的tr节点,但是结果是将所有的tr节点都复制了,这是为什么啊?从FireBug上面观察FF浏览器在外面都增加了的<tobdy>,但是IE6中测试也是复制了两行(IE7+没有测试 因为工作原因需要使用ie6)。另外请教下动态操作Table都是使用HTML DOM 的table对象吗?<html>
<body>
<table id = "tab1" border = 1>
<tr>
<td><input type="text" /></td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
<tr>
<td><input type="text" /></td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
</table>
<button onClick="addRow()">添加行</button> <button onClick="deleteRow()">删除行</button><script type="text/javascript"> function addRow()
{
var theTable = document.getElementById("tab1");
newrow = theTable.lastChild.cloneNode(true); //复制最后一行
theTable.appendChild(newrow); //插入
}
function deleteRow()
{
var theTable = document.getElementById("tab1");
var totalRow = theTable.childNodes.length;
if (navigator.userAgent.indexOf("MSIE") == -1 ) //如果不是ie 总行数减1
totalColume = totalRow-1;
if (totalColume > 1 )
{
// alert(totalRowume);
theTable.removeChild(theTable.lastChild);
}
}
</script>
</html>
<body>
<table id = "tab1" border = 1>
<tr>
<td><input type="text" /></td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
<tr>
<td><input type="text" /></td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
</table>
<button onClick="addRow()">添加行</button> <button onClick="deleteRow()">删除行</button><script type="text/javascript"> function addRow()
{
var theTable = document.getElementById("tab1");
newrow = theTable.lastChild.cloneNode(true); //复制最后一行
theTable.appendChild(newrow); //插入
}
function deleteRow()
{
var theTable = document.getElementById("tab1");
var totalRow = theTable.childNodes.length;
if (navigator.userAgent.indexOf("MSIE") == -1 ) //如果不是ie 总行数减1
totalColume = totalRow-1;
if (totalColume > 1 )
{
// alert(totalRowume);
theTable.removeChild(theTable.lastChild);
}
}
</script>
</html>
解决方案 »
- jquery问题、jquery-selectable懂的进。。。。。
- 这两个js函数的具体作用是什么?
- JavaScript验证整个表单
- MyEclipse里面图片能读 ie也能显示,但是chrome,遨游都不行,怎么回事
- 用JavaScript如何将 %C6%D5%CD%A8%BB%E1%D4%B1 转换成中文?
- 哪位给讲讲js 实现QQ空间相册普通展示效果的逻辑,不用库
- tr_onclick以后交替变色的问题?
- 实现条目的上下滚动(急!!!!!)
- showModalDialog的问题
- JavaScript h5 app中如何下载附件并在新窗口打开,附件是后端传过来的url,目前用的是react.js,该如何比较好的实现?
- js获取display:none到block转换后容器内的控件值
- jquery问题
{
var theTable = document.getElementById("tab1");
newrow = theTable.lastChild.lastChild.cloneNode(true); //复制最后一行
theTable.lastChild.appendChild(newrow); //插入
}
var newrow = obj[obj.length - 1].cloneNode(true); //这样可以克隆最后一行
theTable.appendChild(newrow); //插入
<td><input type="text" /></td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
<tr>
<td><input type="text" /></td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
使用alert(theTable.lastChild.lastChild.innerHTML);后返回的是undefined,FF和IE的情况都是如此,但是alert(theTable.childNodes.length);能返回出节点的数量,这是为什么?
IE下面应该是可以获取最后一行的,但FF下不能,因为IE会忽略节点间的空白文本节点(换行符),FF不会忽略。
<tbody> //!!!!!
<tr>
...
<tbody>的这个问题我也考虑到了,所以才有上面的alert(theTable.lastChild.innerHTML);和alert(theTable.lastChild.lastChild.innerHTML);的测试。