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

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

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

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

 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

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

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

卡兰尼克 提问者

懂了 谢谢大神!
2016-11-22 回复 有任何疑惑可以回复我~

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

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

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

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


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

卡兰尼克 提问者

哇咔咔 真的吗 哈哈哈你这样讲我好开心呀~谢谢亲爱的~
2016-11-22 回复 有任何疑惑可以回复我~
#2

卡兰尼克 提问者

月份为什么要加1呀 ,我试了一下 不加1显示的是十月份。。
2016-11-22 回复 有任何疑惑可以回复我~
#3

尼古拉车夫 回复 卡兰尼克 提问者

因为计算机语言是从0开始算的
2016-11-22 回复 有任何疑惑可以回复我~
#4

尼古拉车夫 回复 卡兰尼克 提问者

我的1加错位置了...然后发现我不知道怎么从你的程序把1加上去[哭笑]
2016-11-22 回复 有任何疑惑可以回复我~
#5

卡兰尼克 提问者 回复 尼古拉车夫

厉害了小哥哥 蟹蟹
2016-11-22 回复 有任何疑惑可以回复我~
#6

尼古拉车夫 回复 卡兰尼克 提问者

你知道月份那个怎么改了吗?我发现我不会用你那种格式去改,解决了发给我看看可以吗?
2016-11-22 回复 有任何疑惑可以回复我~
#7

卡兰尼克 提问者 回复 尼古拉车夫

什么意思
2016-11-22 回复 有任何疑惑可以回复我~
#8

尼古拉车夫 回复 卡兰尼克 提问者

如果在nowday.getMonth()后面直接+1会显示101月。 var nowday=new Date(); var weekday=["星期一","星期二","星期三","星期四","星期五","星期六","星期天"]; var month=nowday.getMonth()+1; document.write( nowday.getFullYear()+"年"+ month+"月"+ nowday.getDate()+"日"+ weekday[nowday.getDay()]+"</br>" );
2016-11-22 回复 有任何疑惑可以回复我~
#9

尼古拉车夫 回复 卡兰尼克 提问者

这样改才会变11月,我想看看你有没有更好的办法
2016-11-22 回复 有任何疑惑可以回复我~
#10

卡兰尼克 提问者

回复 尼古拉车夫4110627 :加个括号 document.write( currentDate.getFullYear() + "年" + (currentDate.getMonth() + 1) + "月" + currentDate.getDate() + "日" + " " + weekday[currentDate.getDay()] );
2016-11-22 回复 有任何疑惑可以回复我~
#11

尼古拉车夫 回复 卡兰尼克 提问者

厉害了大姐姐,谢谢。
2016-11-22 回复 有任何疑惑可以回复我~
查看8条回复

举报

0/150
提交
取消

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

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