JavaScript初心者です。質問が
あります。
誕生日勘定関数birth()、
うるう年対応関数uruu()
はそれぞれ単独で作動することを確認しています。
がbirth()にuruu()を組み込むと作動しなくなります。
どうしたら解決するのでしょうか?
<script language="JavaScript">
<!--
function birth(){
set_m = eval(document.myForm.formm.value);
set_d = eval(document.myForm.formd.value);
if(set_m<1 || set_m>12){
alert("正しい月日を入力してください!");
return false;
}
if(set_m ==2 && set_d>29){
alert("正しい月日を入力してください!");
return false;
}
if(set_m ==1 | set_m ==3 | set_m ==5 | set_m ==7 | set_m ==8 | set_m ==10 |set_m ==12){
if(set_d<1 || set_d>31){
alert("正しい月日を入力してください!");
return false;
}
}else if(set_d <1 | set_d>30){
alert("正しい月日を入力してください!");
return false;
}
if(set_m ==2 && set_d ==29)
uruu();
else if{
now = new Date();
b = now.getYear();
spday= new Date (b,set_m-1,set_d);
spday2 = new Date(b-1,set_m-1,set_d);
spday3 = new Date(b+1,set_m-1,set_d);
a = (spday.getTime() - now.getTime())/(24*60*60*1000);
a = Math.ceil(a);
c = (spday2.getTime() - now.getTime())/(24*60*60*1000);
c = Math.ceil(c);
d = (spday3.getTime() - now.getTime())/(24*60*60*1000);
d = Math.ceil(d)
aa = Math.abs(a);
cc = Math.abs(c);
dd = Math.abs(d);
if(aa==0) document.write("誕生日おめでとう!!");
else if( a<0 && dd>aa && aa<cc) document.write("誕生日から",aa,"日過ぎました・・・");
else if(a<0 && aa>=dd && dd<cc) document.write("あと",dd,"日で誕生日です。");
else if(aa<=cc && aa<dd) document.write("あと",aa,"日で誕生日です。");else if(aa>cc && cc<dd ) document.write("誕生日から",cc,"日過ぎました・・・");
}
}
function uruu(){
now = new Date();
b = now.getYear();
spday = new Date(b,2-1,29);
a = (spday.getTime()- now.getTime())/(24*60*60*1000);
a = Math.ceil(a);
aa = Math.abs(a);
if(a<0){
if(b%4==0)
document.write("誕生日から",aa,"日経過しました。");
else if(b%4==1)
document.write("誕生日から",365+aa,"日経過しました。");
else if(b%4==2)
document.write("あと",365+365-aa,"日で誕生日です。");
else if(b%4==3)
document.write("あと",365-aa,"日で誕生日です。");
}else if(a>0){
if(b%4==0)
document.write("あと",aa,"日で誕生日です。");
else if(b%4==1)
document.write("誕生日から",365-aa,"日経過しました。");
else if(b%4==2)
document.write("誕生日から",365+365-aa,"日経過しました。");
else if(b%4==3)
document.write("あと",365+aa,"日で誕生日です。");
}else if(a==0)
document.write("誕生日おめでとう!!");
}
-->
</script>
<form name="myForm">
<input type="text" name="formm" size=2>月
<input type="text" name="formd" size=2>日
<input type="button" value="誕生日勘定する" onClick="birth()">
</form>
お礼
早速のご回答ありがとうございます! ご指摘の部分を下記に変更してみたところうまく動くようになりました。 d = Math.floor(Math.ceil(d)); また、こちらでも同様に動作しました。 d = Math.ceil(Math.ceil(d)); なお、ご指摘の部分をまるっと削除すると動作はしませんでした。 整数化すると動作し始めました。 整数になるなら、切捨てでも切り上げでも関係はないのですかね。 どっちみち日付の計算で小数点が出ることはないですものね。 これで正しいか分らないのですが、きちんと動作するようですので これで行きたいと思います。 とても勉強になりました。 助かりました!!