判断出生月份问题

判断出生月份问题

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
//声明年函数
function year(){
while(true){
var year=prompt("请输入您的出生年份");
if(isNaN(year)){
alert("请输入数字");
}else{
if (year.length!=4){
alert("请输入4位数字");
}else{
return parseInt(year);
}
}
}
}
year();
//声明月份
function month(){
while(true){
var month=prompt("请输入您的出生月份");
if (isNaN(month)){
alert("请输入数字");
}else{
if(month<1 || month>12){
alert("请输入1-12以内的数字")
}else{
return parseInt(month);
}
}
}
}
month();
//声明日
function date(){
while(true){
var date=prompt("请输入您的出生日")
if(isNaN(date)){
alert("请输入数字");
}else{
if(date<1 || date >31){
alert("请输入1—30以内的数字")
}else{
return parseInt(date);
}
}
}
}
date();
//判断闰年
function runNian(){
var runNian=(year%4==0 && year%100!=0) || year%400==0;
}
runNian();
//判断闰年,计算输入月份之前的天数
  function months(){
  var sum=0;
for(var i=0;i<month-1; i++)
  {sum+=arguments[i];}
if(runNian && month>2){
sum+=date+1;
}else{
sum+=date;
}
return sum;
  }
months(31,28,31,30,31,30,31,31,30,31,30,31);
document.write("您的生日是在"+parseInt(year)+"年是第"+sum+"天");
</script>
</body>
</html>

我已经return sum为何还不能识别sum??

正在回答

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

1回答

你好,主要问题是,在 函数内定义的变量是局部变量,同时 return返回后,要有接受它的变量。建议将主要变量改成全局,同时调用函数有接受变量。参考如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
    var year,month,date,sum,runNian;
    //声明年函数
    function year() {
        while (true) {
            year = prompt("请输入您的出生年份");
            if (isNaN(year)) {
                alert("请输入数字");
            } else {
                if (year.length != 4) {
                    alert("请输入4位数字");
                } else {
                    return parseInt(year);
                }
            }
        }
    }
   year=year();
    //声明月份
    function month() {
        while (true) {
            month = prompt("请输入您的出生月份");
            if (isNaN(month)) {
                alert("请输入数字");
            } else {
                if (month < 1 || month > 12) {
                    alert("请输入1-12以内的数字")
                } else {
                    return parseInt(month);
                }
            }
        }
    }
    month=month();
    //声明日
    function date() {
        while (true) {
            var date = prompt("请输入您的出生日")
            if (isNaN(date)) {
                alert("请输入数字");
            } else {
                if (date < 1 || date > 31) {
                    alert("请输入1—30以内的数字")
                } else {
                    return parseInt(date);
                }
            }
        }
    }
    date=date();
    //判断闰年
    function runNian() {
        runNian = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
    }
    runNian();
    //判断闰年,计算输入月份之前的天数
    function months() {
        sum = 0;
        for (var i = 0; i < month - 1; i++) {
            sum += arguments[i];
        }
        if (runNian && month > 2) {
            sum += date + 1;
        } else {
            sum += date;
        }
        return sum;
    }
    sum=months(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    document.write("您的生日是在" + parseInt(year) + "年是第" + sum + "天");
    </script>
</body>
</html>

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

  • OlafChou 提问者 #1
    老师我发现你sum没有定义变量,是不是缺少了var
    2017-06-20 20:36:01
  • OlafChou 提问者 #2
    非常感谢!
    2017-06-20 20:44:24
  • OlafChou 提问者 #3
    我是发现你最上面给sum赋值了var,但是下面我看到你又赋值了var sum=months
    2017-06-20 20:51:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

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

在线咨询

领取优惠

免费试听

领取大纲

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