<!DOCTYPE HTML> <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>系好安全带,准备启航</title> <script type="text/javascript"> var mydate= new Date(); var myweek=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]; var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76"; var scorearr=new Array(); scorearr=scoreStr.split(";"); var scoreSum=0; for(i=0;i<scorearr.length;i++) { scoreSum=scoreSum+parseInt(score[i].substring(3,2)); } document.write(mydate.getFullYear()+"年" +(mydate.getMonth()+1)+"月" +mydate.getDate()+"日" +myweek[mydate.getDay()] +"--班级总分为:"+scoreSum +"<br/>"); var average = parseInt(scoreSum/ n); document.write("<br/>全班平均分为" + average); </script> </head> <body> </body> </html>
有三个地方有问题:
1. 定义myweek的时候,数组里面的逗号要英文下的逗号
2. scoreSum=scoreSum+parseInt(scorearr[i].substring(3,5)); 里面的数组名你写错了,是scorearr,截取的区间也错了
3. var average = parseInt(scoreSum/scorearr.length); 你的n不知道哪里来的
楼上指出的基本都对,不过代码都写得有些复杂,不便于新手理解,下面是我改过的代码,更简练易懂,你可以参考看看:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系好安全带,准备启航</title>
<script type="text/javascript">
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var s=scoreStr.split(";");
var sum=0;
var pj=0;
var rq=new Date();
var week=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
for(var i=0;i<s.length;i++){
sum=sum+parseInt(s[i].substring(3));
}
pj=sum/s.length;
pj=Math.floor(pj);
document.write(rq.getFullYear()+"年"+(rq.getMonth()+1)+"月"+rq.getDate()+"日"+" "+week[rq.getDay()]+"  "+"班级的总分为:"+sum+"  "+"班级的平均分为:"+pj);
</script>
</head>
<body>
</body>
</html>
您好,试过您的代码以后,我做了如下改动:
定义myweek数组时的逗号将其改为英文输入格式;
for(i=0;i<scorearr.length;i++)
{
scoreSum=scoreSum+parseInt(score[i].substring(3,2));
}
① for循环语句中,parseInt函数中score数组名改为之前定义的scorearr
② 运用substring方法时,将括号内的数字改为只有3或者改为3和5;或者改为使用substr方法,则不需要动括号内的数字
var average = parseInt(scoreSum/ n);
改动:由于之前并没有定义字符n,故此时可将n改为scorearr.length;或者定义n,把scorearr.length的值赋给n
根据题目要求,将JS输出班级总分为的冒号改为英文输入格式
只能改动到如此地步, 如有不周之处,请谅解。一起努力吧!
<script type="text/javascript">
var mydate=new Date();//获取当前时间
var year=mydate.getFullYear();//获取年份
var month=mydate.getMonth()+1;//获取月份
var date=mydate.getDate();//获取日期
var day=['星期天','星期一','星期二','星期三','星期四','星期五','星期六']//星期返回值为0-6,所以要转成文字"星期X"
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var myarr=scoreStr.split(";")//以分号间隔,将字符串转为数组
var y=myarr.length;//用y储存字符串长度
for(i=0;i<y;i++){
myarr[i]=myarr[i].substr(-2,2);//截取字符串最后两个字符
myarr[i]=parseInt(myarr[i]);//字符串→数字
}
var sum=0,ave=0;//初始化总分和平均分
for(i=0;i<y;i++){
sum=sum+myarr[i]//计算总分
}
ave=sum/y;//计算平均分
ave=Math.round(ave);//平均分四舍五入
document.write(year+"年"+month+"月"+date+"日 "+day[mydate.getDay()]+"--班级总分为"+sum+"分,平均分为:"+ave+"分")
</script>
以上所有代码均带注释
scoreSum=scoreSum+parseInt(score[i].substring(3,2));//这里写错了数组名字,还有substring的用法,自己百度这个函数用法
改成scoreSum=scoreSum+parseInt(scorearr[i].substring(3,5));
var average = parseInt(scoreSum/ n);//这里n未定义应该改成数组的长度var average = parseInt(scoreSum/scorearr.length);
你的scoreStr定义的是一个字符串,他根本不是数组,不能引用数组的属性;你直接吧他定义成一个数组看看