有没有大神可以解析一下这串代码..

来源:7-23 编程练习

卡兰尼克

2016-11-22 17:32

<!DOCTYPE  HTML>

<html >

<head>

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

<title>系好安全带,准备启航</title>


<script type="text/javascript">


  var nowday=new Date();

  var weekday=["星期一","星期二","星期三","星期四","星期五","星期六","星期天"];

  document.write(

      nowday.getFullYear()+"年"+

      nowday.getMonth()+"月"+

      nowday.getDate()+"日"+

      weekday[nowday.getDay()]+"</br>"

      );

  

 

  var sorceStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";

  var sourceArr = sorceStr.split(";");

   var score = new Array();

   var sum = 0;

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

       sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(";")+1));

       //document.write("<br>" + sum);//test

   }

   document.write("--班级总分为:" + sum);

   document.write(",班级平均分为(保留整数):" + Math.round(sum/sourceArr.length))

  


 



  //从数组中将成绩撮出来,然后求和取整,并输出。

  



</script>

</head>

<body>

</body>

</html>


 sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(";")+1));



写回答 关注

2回答

  • 我不是管家
    2016-11-22 18:16:40
    已采纳

    首先你的代码错了,是冒号不是分号

     sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(":")+1));

    他的意思是sourceArr[i].indexOf(":")当前数字第i个字符串':'在第几个字符

    显然,例如   小明:87  

                         1 2 3

    冒号在第三个字符位置,输出的是3

    至于为何+1,是因为substr(3+1)也就是substr(4)的意思是获取字符串从第4个字符开始的所有字符(包括第4个)

    所以sourceArr[i].substr(sourceArr[i].indexOf(":")+1)输出的是'87'这个字符串

    然而这不够,需要转化为数字,所以 parseInt(string)能把字符串转化为number

    以上是我的理解,不知道能否看懂

    卡兰尼克

    懂了 谢谢大神!

    2016-11-22 19:26:38

    共 1 条回复 >

  • 尼古拉车夫
    2016-11-22 20:26:17

       sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(";")+1));

    就这句的";"改成“:”就可以了,上面那位大神解释得好清晰啊,惭愧。

    还有月份那里要记得+1, (nowday.getMonth()+"月"+1)

    你这个有些地方写得比示例还要好,学习了


    尼古拉车夫 回复卡兰尼克

    厉害了大姐姐,谢谢。

    2016-11-22 21:29:24

    共 11 条回复 >

JavaScript进阶篇

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

468190 学习 · 21891 问题

查看课程

相似问题