qq_慕虎6366630
2016-04-26 23:46
为什么在ie上看不到平均成绩?而显示的是undefined
我的代码是这样的:
<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系好安全带,准备启航</title>
<script type="text/javascript">
var Udate=new Date()
var week= ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
document.write(Udate.getFullYear()+"年"+(Udate.getMonth()+1)+"月"+Udate.getDate()+"日 "+week[Udate.getDay()]+"--"+"班级总分为:"+age+"<br />");
var scoreStr ="小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var name1=scoreStr.split(";");
var sum=0
for (var i=0;i<name1.length;i++){
sum = sum + parseInt(name1[i].substr(name1.indexOf(":")+1));
}
var age=sum/name1.length;
</script>
</head>
<body>
</body>
</html>
你一共有两处错误
第一 把 document.write(Udate.getFullYear()+"年"+(Udate.getMonth()+1)+"月"+Udate.getDate()+"日 "+week[Udate.getDay()]+"--"+"班级总分为:"+age+"<br />"); 这段 挪到</script>之前
出现 undefined的原因就是这个
因为把他写在前面 程序加载他时,变量age还没定义呢 就会输出 undefined
第二 parseInt(name1[i].substr(name1.indexOf(":")+1) 这句中
把第二个name1 改为 name1[i] 要不的话 你输出的不会是数字
网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,而且javascript执行顺序从上到下依次解析的。此时,你可以document.write(Udate.getFullYear()+"年"+(Udate.getMonth()+1)+"月"+Udate.getDate()+"日 "+week[Udate.getDay()]+"--"+"班级总分为:"+age+"<br />"); 这段 挪到放在网页的底端,这样在运行脚本代码的时候,可以确保要操作的对象已经加载完成;你也可以通过window.onload来执行脚本代码
javascript执行顺序从上到下依次解析的,你的输出语句执行的时候变量age并没有定义所以会出现错误,另外在计算sum的for循环中, parseInt(name1[i].substr(name1.indexOf(":")+1));这句代码substr里面的name1应该改为name1[i],因为你的name1是一个数组,而你要取的是它的第i个元素。
啊,虽然找出来了一个错误,但还是错的
不支持ie,兼容性问题
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题