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

ie上运行为什么没有效果

为什么在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>


正在回答

5 回答

你一共有两处错误  

第一  把  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]   要不的话  你输出的不会是数字


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

qq_慕虎6366630 提问者

谢谢,问题解决了
2016-05-09 回复 有任何疑惑可以回复我~

网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,而且javascript执行顺序从上到下依次解析的。此时,你可以document.write(Udate.getFullYear()+"年"+(Udate.getMonth()+1)+"月"+Udate.getDate()+"日 "+week[Udate.getDay()]+"--"+"班级总分为:"+age+"<br />");  这段 挪到放在网页的底端,这样在运行脚本代码的时候,可以确保要操作的对象已经加载完成;你也可以通过window.onload来执行脚本代码

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

javascript执行顺序从上到下依次解析的,你的输出语句执行的时候变量age并没有定义所以会出现错误,另外在计算sum的for循环中, parseInt(name1[i].substr(name1.indexOf(":")+1));这句代码substr里面的name1应该改为name1[i],因为你的name1是一个数组,而你要取的是它的第i个元素。

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

啊,虽然找出来了一个错误,但还是错的

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

不支持ie,兼容性问题

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

举报

0/150
提交
取消

ie上运行为什么没有效果

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