问答详情
源自:9-14 删除节点removeChild()

document.write()会让程序按钮消失…………why??

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<div id="content">1
  <h1>html</h1>2
  <h1>php</h1>3
  <h1>javascript</h1>4
  <h1>jquery</h1>5
  <h1>java</h1>6
</div>
<script type="text/javascript">
function clearText() {
  var content=document.getElementById("content");
  // 在此完成该函数
  
  //法一,一次性清除节点内容
  var l = content.childNodes.length;
  for(var i=0;i<l;i++){
      if(content.childNodes[i].nodeType!=1){   
      
         continue;  
      }else{
        var x= content.removeChild(content.childNodes[i]);    
document.write(x.innerHTML+"<br/>");
        x=null;
      }
         
      }
  //法二,一次性清除节点内容
/*   
   for(var i=content.childNodes.length-1;i>=0;i--){
      var chnode=content.childNodes[i];
      content.removeChild(chnode);  
   }
*/ 
  //法三,多次方清除节点内容
/*
   for(var i=0;i<content.childNodes.length;i++){
    var chnode=content.childNodes[i];
    content.removeChild(chnode);  
  }
*/
  
  }
  
</script>
<button onclick="clearText()"  title="悬浮title">清除节点内容</button>
</body>
</html>


提问者:空城盼故人 2016-05-31 17:12

个回答

  • kuban
    2016-05-31 17:55:42
    已采纳

    消失原因是执行document.write时文档流已关闭,而document.write是打开文档流再写入,此时是一个新的页面,按钮在旧的页面上,所以看不到了。具体可以查查“为什么document.write()会清空原来的内容”,有前辈给了详细例子与解释。