对大月和小月进行判断
var BirYear,BirMonth,BirDay;
function Ymd() {
BirYear=parseInt(prompt("请输入您的出生年份"));
BirMonth=parseInt(prompt("请输入您的出生月份"));
BirDay=parseInt(prompt("请输入您的出生日期"));
if(BirMonth=1||BirMonth=3||BirMonth=5||BirMonth=7||BirMonth=8||BirMonth=10||BirMonth=12){
BirDay<=31;
}else{
alert("最多只有31天");
}
if(BirMonth=4||BirMonth=6||BirMonth=9||BirMonth=11){
BirDay<=30;
}else{
alert("最多只有30天");
}
}
Ymd();
var arr=[31,28,31,30,31,30,31,31,30,31,30,31]; //每个月份的天数
var day=0;
function WhDay() {
if((BirYear%4==0&&BirYear%100!=0) || BirYear%400==0) { //判断输入的年份是否为闰年
arr[1]=29;
}for(i=0;i<BirMonth-1;i++){
day+=arr[i];
}
day+=BirDay;
};
WhDay(BirYear,BirMonth,BirDay);
document.write("您的生日在"+BirYear+"年"+"是第"+day+"天");
加了if去判断大小月后,程序就不能弹窗了,请老师指点。
正在回答
先说两个粗心的问题:
1、这个你写的是中文状态下的标点,会报错,改成英文状态下的:
2、这里的两个if条件判断,里面的比较全部都是错误的,比较要用==,一个=表示赋值,属于语法错误:
3、一个比较致命的问题,Ymd()方法里面的判断有问题,逻辑不对,你的两个判断,判断的是一件事儿, 就是不管你输入的是12个月里面的那个月,都会有弹窗,举个例子,假如是6月,上面的判断不成立,但是到下面的判断就会弹出BirDay<=30;,两个判断中的else根本不会执行,因为你的判断条件是月份,弹出的确实天数,这个逻辑不对。这里不需要做这个判断,你直接这么写就行:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> </head> <body> <script type="text/javascript"> var BirYear, BirMonth, BirDay; BirYear = parseInt(prompt("请输入您的出生年份")); BirMonth = parseInt(prompt("请输入您的出生月份")); BirDay = parseInt(prompt("请输入您的出生日期")); var arr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //每个月份的天数 var day = 0; function WhDay(BirYear, BirMonth, BirDay) { if ((BirYear % 4 == 0 && BirYear % 100 != 0) || BirYear % 400 == 0) { //判断输入的年份是否为闰年 arr[1] = 29; } for (i = 0; i < BirMonth - 1;i++) { day += arr[i]; } day += BirDay; }; WhDay(BirYear, BirMonth, BirDay); document.write("您的生日在" + BirYear + "年" + "是第" + day + "天"); // 加了if去判断大小月后, 程序就不能弹窗了, 请老师指点。 </script> </body> </html>
如果帮助到了你,欢迎采纳!
- 参与学习 547 人
- 提交作业 206 份
- 解答问题 640 个
JavaScript作为前端学习中的一个重要组成部分,本课程将带领你从最基础的语法开始,学习js的流程控制语句、函数、内置对象、DOM基础、DOM事件、BOM基础以及经典的js案例--轮播图。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星