<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> </head> <body> <div id="content"> <h1>html</h1> <h1>php</h1> <h1>javascript</h1> <h1>jquery</h1> <h1>java</h1> </div> <script type="text/javascript"> function clearText() { var content=document.getElementById("content"); for(var i=0;i<content.childNodes.length;i++){ var cn=content.childNodes[i]; content.removeChild(cn); } } </script> <button onClick="clearText()">清除节点内容</button> </body> </html>
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> </head> <body> <div id="content"> <h1>html</h1> <h1>php</h1> <h1>javascript</h1> <h1>jquery</h1> <h1>java</h1> </div> <script type="text/javascript"> function clearText() { var content=document.getElementById("content"); for(var i=content.childNodes.length-1;i>=0;i--){ var childNode = content.childNodes[i]; content.removeChild(childNode); } } </script> <button onClick="clearText()">清除节点内容</button> </body> </html>
为什么第二个能全部清除 而第一个不能啊
使用for循环清除节点例如:如下代码会导致每次点击都只能清除部分节点。这是因为每次清除节点时childNodes的长度(即tt.length)都缩短1,而每次I增大1,这样会导致i的值还没有达到最初的tt.length时循环会比提前结束;
var tt=content.childNodes;
for(i=0;i<tt.length;i++);{
content.removeChild(tt[1]);
}
简述:正序删除与倒序删除的差别
来自:MotoDoctor的解释。仅供参考