<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系好安全带,准备启航</title>
<script type="text/javascript">
//通过javascript的日期对象来得到当前的日期,并输出。
var Udate = new Date();
var weekend = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
var mynum = Udate.getDay();
document.write(Udate+"</br>");
document.write(Udate.getFullYear()+"年"+Udate.getMonth()+1+"月"+Udate.getDate()+"日"+weekend[mynum]+"</br>");
//成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var arrsco = scoreStr.split(";");//这里不先写这步为什么不可以实现?///
//document.write(scoreStr.split(";")+"</br>");
//document.write(arrsco.length)
var i=0;
var arrnum = new Array();////////-----
//document.write(scoreStr.length+"</br>");//////
for(i;i<=arrsco.length;i++){
arrnum[i]=arrsco[i].slice(3,5);
document.write(arrnum[i]+"</br>");
sum+ = parseInt(arrnum[i]);//这里为什么不执行呢?程序有这个则就不能正常运行了的
//document.write("平均成绩:"+"</br>")
}
//document.write(arrnum.length+"</br>")
//document.write("平均成绩:"+sum/(arrsco.length+1)+"</br>")//这里求平均,但是没有执行。这句为什么只有放到for循环里才起作用?for循环完了应该就执行了啊?
//从数组中将成绩撮出来,然后求和取整,并输出。
</script>
</head>
<body>
</body>
</html>我的想法是arrnum[i]=arrsco[i].slice(3,5)按下表以此赋值,然后parseInt 转换成书之后,sum求和并且平均,但是for循环里的sum+那里不能正确执行,还有就是document.write("平均成绩:"+sum/(arrsco.length+1)+"</br>") 这句为什么只有放到for循环里才能执行,放在for后面为什么就不能执行,for循环执行完了以后不是自动向下执行吗?起高人指教,本人是爱学习的小白一枚~~~~~
3 回答
已采纳
上帝遗弃之仔
TA贡献4条经验 获得超0个赞
(⊙v⊙)没懂你意思,我再解释一下吧。
var sum = 0;
这条语句是
var sum; sum= 0;
这两条语句的复合语句。第一行是变量声明,第二行才是给sum赋初值。
如果不赋初值(只有第一行),没有第二行的话sum的值会是undefined(空的)。
其实JavaScript中可以没有第一条声明语句浏览器也能正确解析,但是好的编程习惯先声明后使用。
上面这个例子中sum = 0;这句话是一定不可省略的。
上帝遗弃之仔
TA贡献4条经验 获得超0个赞
第二个问题找了好久= =,25行for循环第二个循环条件 i<=arrsco.length,因为i是从0开始的,你这样写就多循环了一次,正确的写法应该是 i<arrsco.length。
32行也有个小错误,arrsco.length获取到的就是数组中元素的个数,不需要再加1的。
还有个小问题sum使用之前最好声明一下
你对数组还没理解好,再复习一下吧~
<!DOCTYPE HTML> <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>系好安全带,准备启航</title> <script type="text/javascript"> //通过javascript的日期对象来得到当前的日期,并输出。 var Udate = new Date(); var weekend = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"] var mynum = Udate.getDay(); document.write(Udate+"</br>"); document.write(Udate.getFullYear()+"年"+Udate.getMonth()+1+"月"+Udate.getDate()+"日"+weekend[mynum]+"</br>"); //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦 var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76"; var arrsco = scoreStr.split(";");//这里不先写这步为什么不可以实现?/// //document.write(scoreStr.split(";")+"</br>"); //document.write(arrsco.length) var i; var sum=0; var arrnum = new Array();////////----- //document.write(scoreStr.length+"</br>");////// for(i=0;i<arrsco.length;i++){ arrnum[i]=arrsco[i].slice(3,5); document.write(arrnum[i]+"</br>"); sum += parseInt(arrnum[i]);//这里为什么不执行呢?程序有这个则就不能正常运行了的 //document.write("平均成绩:"+"</br>") } document.write("总成绩:"+ sum +"<br />"); //document.write(arrnum.length+"</br>") document.write("平均成绩:"+Math.round(sum/arrsco.length)+"</br>")//这里求平均,但是没有执行。这句为什么只有放到for循环里才起作用?for循环完了应该就执行了啊? //从数组中将成绩撮出来,然后求和取整,并输出。 </script> </head> <body> </body> </html>
添加回答
举报
0/150
提交
取消