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

在document.write里直接调用函数的问题

      document.write(cloc()+"--班级总分为:" + num + "<br>");

为什么这样写函数后会多个undefined呢?

这是代码:

function cloc() {
      var todays = new Date();
      var year = todays.getFullYear();
      var mon = todays.getMonth()+1;
      var day = todays.getDate();
      var week = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
      var today = todays.getDay();
      document.write(year + '年' + mon + '月' + day + '日' + week[today]);
 }
      var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
      var score = scoreStr.split(";");
      var num = 0;
    for (var i=0; i< score.length; i++) {    //循环score数组                    
            num += parseInt(score[i].substr(score[i].indexOf(":")+1));
          }
          cloc();
      document.write("--班级总分为:" + num + "<br>");
          cloc();
      document.write("--班级平均分:" + Math.round(num/score.length));

正在回答

3 回答

看不懂你加这个 cloc() 有什么用

看我的代码

<!DOCTYPE  HTML>

<html >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>系好安全带,准备启航</title>


<script type="text/javascript">


  //通过javascript的日期对象来得到当前的日期,并输出。

  var aaa = new Date();

  var bbb = new Array(["日"],["一"],["二"],["三"],["四"],["五"],["六"]);

  document.write(aaa.getFullYear()+"年"+(aaa.getMonth()+1)+"月"+aaa.getDate()+"日 星期"+bbb[aaa.getDay()]+"<br />");

  

  //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦

  var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";

  var ccc = new Array;

  var ddd = new Array;

  var sum = 0;

  ccc = scoreStr.split(";");

  for(i=0;i<ccc.length;i++){

    ddd[i] = ccc[i].split(":");

    sum += parseInt(ddd[i][1]);

    document.write(i+" "+ddd[i][0]+" "+ddd[i][1]+"<br />");

  }

  

  document.write("--班级共"+ccc.length+"人 总分为:"+sum+" 平均分为:"+Math.floor(sum/ccc.length));

  //从数组中将成绩撮出来,然后求和取整,并输出。

  



</script>

</head>

<body>

</body>

</html>


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

LY_1124 提问者

……包装个函数直接调用多方便……
2016-04-18 回复 有任何疑惑可以回复我~
#2

慕粉3168198 回复 LY_1124 提问者

我试了一下,应该是函数都是默认要返回一个值的,也就是return 的值,如果没有,估计会默认加一个空值 试验1: document.write(year + '年' + mon + '月' + day + '日' + week[today]); return 1; //会返回 1 试验2: var a = document.write(year + '年' + mon + '月' + day + '日' + week[today]); return a; //这样还是会出现undefined,估计是这样嵌套会出bug 另,本例中,你写了一个根本不需要的函数
2016-04-18 回复 有任何疑惑可以回复我~
#3

慕粉3168198 回复 慕粉3168198

实验3: var a = year + '年' + mon + '月' + day + '日' + week[today]; return a; 分析: 用document.write(cloc()+"--班级总分为:" + num + "<br>");调用的时候函数里先执行了document.write ,然后返回值默认为空,所以出现了 undefined 所以去掉函数里面的 document.write ,直接把日期结果字符串返回,就没有问题了。
2016-04-18 回复 有任何疑惑可以回复我~
#4

LY_1124 提问者 回复 慕粉3168198

根据你的回答,我弄明白是怎么回事了,谢谢~ 但我坚持这种包装函数的写法,以便以后养成好的习惯 是默认返回值与document.write的冲突,只要改成这样 var cc = year + '年' + mon + '月' + day + '日' + week[today]; return cc; 再调用函数时就不会有bug了
2016-04-18 回复 有任何疑惑可以回复我~
#5

LY_1124 提问者 回复 慕粉3168198

是的,是这问题,我刚才自己也试出来了。谢谢
2016-04-18 回复 有任何疑惑可以回复我~
查看2条回复

cloc()  是什么,里面应该有问题。

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

LY_1124 提问者

代码贴上了,帮忙看看是为什么呢
2016-04-18 回复 有任何疑惑可以回复我~

这种写法是没问题的,有可能是cloc()的函数中有错误,当然没看到你的代码是不能直接下判断的。我也是小白~

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

举报

0/150
提交
取消

在document.write里直接调用函数的问题

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