阿宅娘
2018-03-21 17:50
<!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");
// 在此完成该函数
var myh1 = content.childNodes;
for(i=0;i<myh1.length;i++){
var a = content.removeChild(myh1[i]);
}
document.write("所有节点已删除");
}
</script>
<button onclick="clearText()">清除节点内容</button>
</body>
</html>
document.write()在function clearText()内,页面加载时没有运行。当function clearText()动作启用时,代码document.write()会代替页面内所有东西。 解决办法就是写在动作外,页面加载时候就运行则不会覆盖。
这个也困扰我也……
遇到文本节点就不能删除若需要一次全部删除改成如下: 这句有问题,将其中的文本节点改成空白节点
function clearText() { var content=document.getElementById("content"); // 在此完成该函数 var myh1 = content.childNodes; for(i=0;i<myh1.length;i++){ var a = content.removeChild(myh1[i]); } //document.write("所有节点已删除"); //这句注释掉就好了 }
将上边的document.write("所有节点已删除");这句注释掉就好了,至于原因,愚也没搞懂……即使注释掉这句也不能一次将所有删除掉(IE浏览器是可以的,IE浏览器不会识别空白节点),遇到文本节点就不能删除若需要一次全部删除改成如下:
function clearText() { var content=document.getElementById("content"); // 在此完成该函数 for (var i=0;i<content.childNodes.length;i++){ if(content.childNodes[i].nodeType!=1){ //判断节点nodeType是否为1, 如是为元素节点,跳过。https://www.imooc.com/code/1593 continue; }else{ content.removeChild(content.childNodes[i]); } }
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题