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

这段学习代码我有疑问的地方哪里出问题了呢?先谢谢大家

这段学习代码我有疑问的地方哪里出问题了呢?先谢谢大家

uwenhao2008 2016-01-03 21:11:46
<!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;这句话是一定不可省略的。

查看完整回答
反对 回复 2016-01-07
?
上帝遗弃之仔

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>


查看完整回答
反对 回复 2016-01-03
  • uwenhao2008
    uwenhao2008
    你说的sum使用之前最好申明一下,是因为什么原因呢?我试了一下,不申明var sum=0,则只会显示出来小明的87,就没有然后了。请问这个是由于什么原因呢?不设置var sum=0,此时sun的值难道是随机值吗?
?
上帝遗弃之仔

TA贡献4条经验 获得超0个赞

28行,你本意是"+=",中间多了个空格导致错误的- -||

查看完整回答
反对 回复 2016-01-03
  • 3 回答
  • 0 关注
  • 1310 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信