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

求大神解答

求大神解答

皓韵儿 2016-08-20 12:07:09
              html     php     javascript     jquery     java     () {         =.();         = .;         (= ; < .; ++){             = [];             .();         }     } ()为什么两个for循环执行的结果不一样?
查看完整描述

3 回答

已采纳
?
stone310

TA贡献361条经验 获得超191个赞

for(var i=content.childNodes.length-1;i>=0;i--){ 先说说这种写法发生了什么,

当你点击触发,i的值是content.childNodes.length-1,条件是只要i>=0,就可以执行语句,因此这里i能执行到i=0;

因此这种写法下点击按钮所有节点全部删除

第二种写法:for(var i = 0; i < content.childNodes.length; ++i){

点击触发,i开始是0,条件是i要小于元素节点的个数,就是这里发生了问题,

i=0;length=11,执行语句删除节点,继续

i=1;length=10,执行语句删除节点,继续

i=2;length=9,执行语句删除节点,继续

i=3;length=8,执行语句删除节点,继续

i=4;length=7,执行语句删除节点,继续

i=5;length=6,执行语句删除节点,继续

i=6;length=5,条件不满足,停止!

再次点击,

i=0 ; length=5............

因此执行效果是不同的

查看完整回答
反对 回复 2016-08-21
?
皓韵儿

TA贡献86条经验 获得超114个赞

这是代码。。

<!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=content.childNodes.length-1;i>=0;i--){
           for(var i = 0; i < content.childNodes.length; ++i){
           var childNode = content.childNodes[i];
           content.removeChild(childNode);
       }

   }
</script>

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

</body>
</html>


查看完整回答
反对 回复 2016-08-21
?
摩诃迦叶

TA贡献146条经验 获得超54个赞

?你这是什么?

查看完整回答
反对 回复 2016-08-20
  • 皓韵儿
    皓韵儿
    <!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=content.childNodes.length-1;i>=0;i--){ for(var i = 0; i < content.childNodes.length; ++i){ var childNode = content.childNodes[i]; content.removeChild(childNode); } } </script> <button onclick="clearText()">清除节点内容</button> </body> </html>
  • 摩诃迦叶
    摩诃迦叶
    用//for(var i=content.childNodes.length-1;i>=0;i--){ 是对的! 用for(var i = 0; i < content.childNodes.length; ++i)是错的。 因为content.childNodes.length是在不断减少的。比如,有10个子节点。这时是i<10,你在循环中删除一个子节点,就剩9个子节点了,这时的判断条件就变成了i<9;这样这个for循环时不会执行10次,也就不能删除所有子节点了。
  • 3 回答
  • 0 关注
  • 1363 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信