今天我做完这个题目花了3个小时,但是感觉很愉快!
<DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>习题5</title>
<script>
function show(f){
var myArray=[];
var re=/\d+/g;
birthDay=f.birth.value;
myArray=birthDay.match(re);
var day=myArray[1];
day=parseInt(day);
var month=myArray[0];
var year=null;
month=parseInt(month);
month-=1;//获取输入月份成功。
var now=new Date();
var currentMonth=now.getMonth();//获取当前月份成功。
var currentDate=now.getDate();//获取当前日子成功。
if(month>currentMonth){
year=now.getFullYear();
}
else if(month<currentMonth){
year=now.getFullYear()+1;
}
else if(month==currentMonth){
if(day>=currentDate){
year=now.getFullYear();
}
else{
year=now.getFullYear()+1;
}
}
//alert(year);这是最麻烦的部分。根据生日月份的大小关系得到年份。
var nextBirth=new Date(year,month,day);
//alert(nextBirth);
var timeDiff=nextBirth.getTime()-now.getTime();
leftDays=timeDiff/1000/60/60/24;
f.result.value=Math.round(leftDays);
}
</script>
</head>
<body>
<h1>算算你的生日还有多少天</h1>
<form name="form1">
<p>
请输入你的出生月份和日期<input type="text" name="birth" size="50" onBlur="show(this.form)" /><span>示例:3月29日</span><br/>
到你的生日还有的天数:<input name="result" type="text" name="cal" size="50" />
</p>
</form>
</body>
</html>
本程序的大部分代码在解决年份的动态变化上。即如果你今年的生日已经过了,那么自然你的下一个生日就挪到明年了。