为了账号安全,请及时绑定邮箱和手机立即绑定

想不通为什么出来的结果为什么是未定义,感觉代码并没有错

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

      document.write("被删除的节点:"+x.innerHTML+'</br>');

  }

  

}

</script>


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




</body>

</html>

 

结果:

被删除的节点:undefined
被删除的节点:undefined
被删除的节点:undefined
被删除的节点:undefined
被删除的节点:undefined


正在回答

2 回答

不好意思了,妹子,第一次回答得太草率了。你使用是对了的,不过你忽略了一个细节。我的代码是这样的:

<script type="text/javascript">

function clearText() {

  var content=document.getElementById("content");

  // 在此完成该函数

  for(var i=(content.childNodes.length-1);i>=0;i--){

   var x= content.removeChild(content.childNodes[i]);

   document.write("被删除的节点:"+x.innerHTML+'</br>');

  } 

}

</script>

http://img1.sycdn.imooc.com//581c2def00017b2a02200256.jpg

这样其实就知道问题所在了:

第一:子节点中包含文本节点,而且是空文本节点,也就是里面的undefined。

第二:就是删除的时候,我们推荐从后删除,原因

子节点:[文本(0),元素(1),文本(2),元素(3).......]   i=0;

删除第一个文本节点之后,i=1,子节点就是这样的:

子节点:[元素(1),文本(2),元素(3),.....]

这是又删除了一个文本节点,其实元素节点一个都没有删除掉。所以你看到的都是undefined。

从后面删除就不会出现这种问题。

这次应该好了,嘻嘻~

0 回复 有任何疑惑可以回复我~
#1

小菜鸟Holly 提问者

哈哈哈哈,谢谢你啦。懂了。
2016-11-04 回复 有任何疑惑可以回复我~
#2

老友丶 回复 小菜鸟Holly 提问者

其实从前面删除也是可以的,for循环,每次删除第一项,直到数组长度为0就可以了。
2016-11-04 回复 有任何疑惑可以回复我~

var x=content.removeChild(content.childNodes[i]);

 document.write("被删除的节点:"+x.innerHTML+'</br>');

你这里x是一个方法的返回值啊,就是content调用removeChild方法之后返回值,所以你看到是undefined。

我才你大概是想看节点内容吧。

var x=content.removeChild(content.childNodes[i]);

document.write("被删除的节点:"+content.childNodes[i].innerHTML+'</br>');

这样子就好了。


0 回复 有任何疑惑可以回复我~
#1

小菜鸟Holly 提问者

var x=content.removeChild(content.childNodes[i]);removeChild()这个函数返回值值是被删除节点的呀,那我为什么不能直接使用x。
2016-11-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

想不通为什么出来的结果为什么是未定义,感觉代码并没有错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信