虽然写出来了 但是逻辑有点混乱

来源:9-14 删除节点removeChild()

mosaice

2015-05-29 14:41

function clearText() {

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

  // 在此完成该函数

  for(i=content.childNodes.length;i>0;i++){

      content.removeChild(content.childNodes[0]) 

}

}

这个代码虽然可以用 但是我对里面的顺序有点不理解 我自己理解是

第一次循环之后 i的值虽然加一了但是在第二圈循环开始的时候i重新赋值了所以i++这个条件并没有什么用

for(i=content.childNodes.length;i>0;)

然后一开始我是这么写的 测试的时候失败了后来重新试试又成功了 不知道这么写有问题吗?


写回答 关注

1回答

  • 摇摆企鹅
    2015-05-29 16:15:41
    已采纳

    首先来了解一下 for 循环在 js 中的运行机制

    for(语句1; 语句2; 语句3){//代码块}

    语句 1 在循环(代码块)开始前执行

    语句 2 定义运行循环(代码块)的条件

    语句 3 在循环(代码块)已被执行之后执行

    所以 循环阶段 语句1是不执行的 ;然后循环开始,先判断语句2 成功则执行代码块 失败则跳出循环;如果运行代码块,每一次循环结束后执行语句3

    然后我们来看代码

    function clearText() {
      var content=document.getElementById("content");
      // 在此完成该函数
      for(var i=content.childNodes.length;i>0;i++){
          content.removeChild(content.childNodes[0]) 
      }
    }

    这段代码原意应该是删除 content 的所有子元素,按照逻辑 for循环中的语句3应该为 i--

    最后如果 不想写语句1 和语句3的话 可以改写成

    for(;content.childNodes.length>0;){
          content.removeChild(content.childNodes[0]) 
      }

    哎 写了这么多 最后发现 代码中 循环里有个分号用的是 中文的分号;

    mosaic...

    辛苦了 - -

    2015-05-29 16:28:39

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题