不会用开发者工具检测bug,求看以下代码哪里错了?

不会用开发者工具检测bug,求看以下代码哪里错了?

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>1-11作业</title>

</head>

<body>

<script>

function getDate() {

var y=prompt("请输入您的出生年份"),

m=prompt("请输入您的出生月份"),

d=prompt("请输入您的出生日期");

return y,m,d;

}

function day(y,m,d) {

var sum=0,x;

for(var i=1;i<m;i++){

if (y%4==0) {

if(i==2){

x=29;

}else{

if(i%2=1){

x=31;

}else{

x=30;

}

}

   }else{

if (i==2) {

x=28;

}else{

if (i%2==1) {

x=31;

}else{

x==30;

}

}

}

return sum=sum+i*x+d;

}

getDate();

day();

document.write("您的生日在"+y+"年是第"+sum+"天");

}

</script>

</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

一、测试在运行的浏览器,按f12, 控制台console。

二、关于代码,有以下几个问题:

    1. 在getDate() 中 return y,m,d; ,谁来接受这些值;

    2. 第27行,if(i%2=1) 判断正确写法应该是 if(i%2==1)

    3.  在 day(y,m,d)函数内,调用getDate();和day(); , 所以不起作用。

    4. return sum=sum+i*x+d; 是在for 循环里,没循环一次执行一次,试想,当i=2 时,sum应该是加上29或者28 , 而不是加上 i*x 。先把输入月份前的月的天数加上,最后加上输入天数。

    5. 第44行的return 把值返回去了。怎么还会执行函数,所以要返回,也是整个函数体内的内容执行完后,还执行return。

三、综合上面的问题,建以思路:

    1. 在getDate()函数中调用day(y,m,d),这样直接把y,m,d的值就传给day()函数了。

    2. 在 day(y,m,d)函数内,先判断是否为闰年,闰年判断条件:需满足下列条件之一(年份能整除4但是不能整除100或年份能整除400)。

    3. 是闰年,2月29天,将输入月前的所有月的天数加起来,最后加如何天数。(当然还要考虑,30和31的月份)

    4. 不是闰年,2月28天,将输入月前的所有月的天数加起来,最后加如何天数。(当然还要考虑,30和31的月份)

    5. 最后将 结果return出去。并输出。

    6. 还要记住,因为都是函数,所以在外面要运行下函数,要不不起作用。

希望对你有帮助,祝学习愉快,欢迎采纳。


  • 麻酱o 提问者 #1
    html lang="en"> <head> <meta charset="UTF-8"> <title>1-11作业</title> </head> <body> <script> var y, m, d; function getDate() { y = prompt("请输入您的出生年份!"); m = prompt("请输入您的出生月份!"); d = prompt("请输入您的出生日期!"); if (isNaN(y)) { alert("请输入数字!"); } if (isNaN(m)) { alert("请输入数字!"); }else{ if (m<1 && m>12) { alert("请输入1-12之间的数字!"); } } if (isNaN(d)) { alert("请输入数字!") ; } else { if (d<1 && d>31) { alert("请输入1-31之间的数字!"); }else{ if (m==2 && (y%4==0 && y%100!=0) || y%400==0) { alert("请输入1-29之间的数字"); }else{ alert("请输入1-28之间的数字"); } } } return y,m,d; } function day(y,m) { var sum = 0 ; var myArray = [0,31,28,31,30,31,30,31,31,30,31,30,31]; for(var i = 0;i < m;i++){ if ((y%4==0 && y%100!=0) || y%400==0) { if (m<=2) { sum+=myArray[i]; }else{ sum+=myArray[i] + 1; } }else{ sum+=myArray[i]; } } return sum; } //调用函数 getDate(); var sum1 = day(y,m) + d; document.write("您的生日在"+y+"年是第"+sum1+"天"); </script> </body> </html> 您在帮忙看下这个 打开还是不行
    2017-02-27 14:26:39
  • 麻酱o 提问者 #2
    .....额,能删除不
    2017-02-27 14:27:35
  • 小于飞飞 回复 提问者 麻酱o #3
    如传错,可以在重新传下,把具体问题描述清楚呦。
    2017-02-27 15:00:07
提问者 麻酱o 2017-02-26 17:38:19

58b2a1f100019e9e05000383.jpg

58b2a1f10001b50a05000309.jpg

58b2a1f1000153c105000244.jpg

看图吧,加上了注释

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师