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

怎么输出内容是[object Text]?

<!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 a=content.removeChild(content.childNodes[i]);

      document.write(a+"<br>");

  };

  

}

</script>


<button onclick="clearText()">清除节点内容</button>




</body>

</html>


提问者:顺其自然0123456789101112131415 2016-08-20 15:37

个回答

  • 水里有条鱼
    2016-08-20 18:32:46

    首先content第一个子节点是文本节点所以显示[object text],然后document.write()就把其他东西清掉了,得不到第二个节点,然后就没然后了。

    这个道理其实很简单,假设我有红橙黄绿蓝靛紫七种颜色贴纸,我把它贴在黑板上,我把红色的拿下来,然后想在黑板上写上第一个是红色,发现黑板上有贴纸我不能写,我就把贴纸都拿下来,然后写上红色,当我想拿第二个的时候,我发现黑板上没有第二个了,没有贴纸了,所以黑板上只剩下红色两个字。

    不要笑我傻,这个过程就是浏览器操作的过程,加载完页面后,在调用document.write,会把页面刷新一遍,就什么都没了。(页面加载时调用(没有事件触发)不会),可以用alert试试。还有这个循环有很大缺陷,建议多参考这题的别人的问答