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

为什么第二段代码的值运行显示不出来

<!DOCTYPE  HTML>

<html >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>流程控制语句</title>

<script type="text/javascript">


 //第一步把之前的数据写成一个数组的形式,定义变量为 infos

 var infos=[

     ['小A','女',21,'大一'],

     ['小B','男',23,'大三'],

     ['小C','男',24,'大四'],

     ['小D','女',21,'大一'],

     ['小E','女',22,'大四'],

     ['小F','男',21,'大一'],

     ['小G','女',22,'大二'],

     ['小H','女',20,'大三'],

     ['小I','女',20,'大一'],

     ['小J','男',20,'大三']

    ];

 

 //第一次筛选,找出都是大一的信息

 for(var i=0;i<=infos.length;i++){

    if(infos[i][3]=="大一"){

        document.write(infos[i]+'<br>'); 

    }

    else{}

 }

 

 //第二次筛选,找出都是女生的信息

 for(var j=0;j<=infos.length;j++){

    if((infos[j][1]=="女")&&(infos[j][3]=="大一")){

        document.write(infos[j]+'<br>'); 

    }

    else{}

 } 

 

  

</script>

</head>

<body>

</body>

</html>


正在回答

6 回答

 document.write就是喜欢覆盖,文档加载完了再用就会覆盖整个html

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

循环条件错了吧

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

因为这里i<=infos.length;导致报错了,应该i<infos.length;

因为数组的下标是0开始,length是1开始,所以数组最大下标应该是length-1

i<=infos.length;导致循环出了 infos[10] 这样的不存在的第11个值,所以抛出undefined程序停止了

同理j<=infos.length也一样

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

一棵心 提问者

刚刚看了下是数组越界的问题,那为什么第一段程序运行出来了,第二段就不行了呢?不行应该是都不行的啊?
2016-04-06 回复 有任何疑惑可以回复我~
#2

Valkyrie 回复 一棵心 提问者

因为程序是由上到下流式运算出来的,当你循环的时候,i=0到i=9都可以运算出结果,程序继续走,到i=10了程序出错了,出错了就卡在这里了╮(╯_╰)╭,第二个循环压根就没进去,所以页面上只有i循环的运算结果,j循环没有运行过
2016-04-06 回复 有任何疑惑可以回复我~

i<=infos.length 改为 i< infos.length

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

第一次值包含了第二次值,就覆盖了。。。。?

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

课程链接发下


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

一棵心 提问者

http://www.imooc.com/code/1484
2016-04-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么第二段代码的值运行显示不出来

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