代码如下: 我想做的是为Node 写一个clearChildren() 的函数,作用就是将它的所有孩子清除,只留自己,以便重新添加新的节点
但是好像效果并不是想像的那样 ,孩子节点一个也没有去掉,alert(d.innerHTML); 依然能显示 出来,请高手讲解
//清空domOBJ 的所有子节点
Node.prototype.clearChildren = function() {
var children = this.childNodes;
for ( var i = 0; i < children.length; i++) {
var child = children[i];
while(child.hasChildNodes()){
child.clearChildren();
}
this.removeChild(child);
}
// alert(this);
// var par=this.parentNode;
// var clone_=this.cloneNode(false);
// par.replaceChild(clone_, this);
return this;
}
function click_action() {
var d = document.getElementById("d");
var tab = document.getElementById("tab");
//d.removeChild(tab);//如果是这样,选获取d.tab 节点(而不是d.childNodes[i]方式)则可以
var d2 = document.getElementById("d2"); d.clearChildren();
alert(d.innerHTML);
d2.appendChild(d);
}<%@ page language="java" import="java.util.*;" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <script type="text/javascript" src="js/dom.js">
</script>
<script type="text/javascript">
</script>
</head> <body> <div id="d">
<table border="1" id="tab">
<tr>
<td>1</td>
<td>2<td>
</tr>
</table>
</div>
<form action="">
<input type="button" onclick="click_action()" value="click here">
</form>
<br>
<div id="d2"></div>
</body>
</html>
但是好像效果并不是想像的那样 ,孩子节点一个也没有去掉,alert(d.innerHTML); 依然能显示 出来,请高手讲解
//清空domOBJ 的所有子节点
Node.prototype.clearChildren = function() {
var children = this.childNodes;
for ( var i = 0; i < children.length; i++) {
var child = children[i];
while(child.hasChildNodes()){
child.clearChildren();
}
this.removeChild(child);
}
// alert(this);
// var par=this.parentNode;
// var clone_=this.cloneNode(false);
// par.replaceChild(clone_, this);
return this;
}
function click_action() {
var d = document.getElementById("d");
var tab = document.getElementById("tab");
//d.removeChild(tab);//如果是这样,选获取d.tab 节点(而不是d.childNodes[i]方式)则可以
var d2 = document.getElementById("d2"); d.clearChildren();
alert(d.innerHTML);
d2.appendChild(d);
}<%@ page language="java" import="java.util.*;" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <script type="text/javascript" src="js/dom.js">
</script>
<script type="text/javascript">
</script>
</head> <body> <div id="d">
<table border="1" id="tab">
<tr>
<td>1</td>
<td>2<td>
</tr>
</table>
</div>
<form action="">
<input type="button" onclick="click_action()" value="click here">
</form>
<br>
<div id="d2"></div>
</body>
</html>
解决方案 »
- 晕了 addEventListener怎么往里面传参??
- 奇奇怪怪之jquery html()
- js数组中如果有重复的值,怎么把重复的删掉????
- 散分啦:发布一个日期选择控件(htc)
- js去除2个按钮键的空白
- 性别男女的字符值在显示时怎么根据 值‘男’或 值‘女’来显示出选中效果
- innerHTML里面的事件为什么有问题啊!!!!!!帮忙
- 关于<span></span>通过javaScript改变其属性时为什么会换行
- 请问哪里有JAVASCRIPT方法/函数适用于IE什么版本呢?
- 我感觉很难,大家看CSDN的登陆http://expert.csdn.net/expert/。。。。
- 进来看看,谷狗浏览器下js的一些问题
- Help~~有没有web 游览文件夹 取得文件夹路径的方法?
没有node这个类型,所以这个方法无效想清除子节点,直接 obj.innerHTML="";就可以了
Element.prototype.clearChildren = function() {
var children = this.childNodes;
for (var i = children.length - 1; i >= 0; i--) {
var child = children[i];
while (child.hasChildNodes()) {
child.clearChildren();
}
this.removeChild(child);
}
return this;
}
,就会有Element对象
像这种清楚用removeChild反而不好
可以参考我这里关于超空间的测试