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

请问怎么输出是underfined

function clearText() {

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

  // 在此完成该函数

  var x=content.childNodes;

  var num=x.length;

  for(var i=0;i<num;i++)

  {

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

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

  }

}

输出结果:

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

正在回答

2 回答

<!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 x=content.childNodes;

  var num=x.length;

  for(var i=0;i<num;i++)

  {

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

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

      i--;

  }

}

</script>

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

</body>

</html>

1、有空标签,所以会输出undefined;

2、没删除一个子节点,content的子节点数目都会减少一个,所以每次for循环让i自减1.

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

DOFOR 提问者

是不是num自减1?
2017-08-08 回复 有任何疑惑可以回复我~
#2

DOFOR 提问者

奥,我好像有点懂了,谢谢
2017-08-08 回复 有任何疑惑可以回复我~
#3

DOFOR 提问者

但是我这个num数值好像是固定的,这样不是死循环了吗?
2017-08-08 回复 有任何疑惑可以回复我~
#4

慕移动5947621

但是为什么给的例子里删除完后,还可以输出值,不是说要x=null才会完全删除吗
2018-03-24 回复 有任何疑惑可以回复我~
查看1条回复

不是num自减1,这样没有效果,应该是i自减1,因为一个for循环中i都会加1,但是节点数目会减1,这样就会出问题,其实这样写for循环不好,可以使用while循环

function clearText() {

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

  // 在此完成该函数

len=content.childNodes.length;

while(content.firstChild){

content.removeChild(content.firstChild);

}

}

每次删除第一个节点后,第二个节点就会变成第一个节点,所以一直检测第一个子节点就行


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

DOFOR 提问者

恩恩,懂了
2017-08-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问怎么输出是underfined

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