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

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

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 回答

首先来了解一下 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]) 
  }

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

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

mosaice 提问者

辛苦了 - -
2015-05-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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