このjavascriptコードを短くできませんか?
javascript初心者です。
どなたか下記のコードを短くしていただけないでしょうか?
変数1~変数12まであるので、それぞれコードを書いたら長くなってしまいました。
このままでもうまく動いてはいるのですが、もし短くできるならしたいなと思いまして。
よろしくお願いいたします。
<script type="text/javascript">
<!--
//基準になる日を設定
inputDay1 = "変数1"; //指定日を変数に
var hairetu = inputDay1.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday1 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay2 = "変数2"; //指定日を変数に
var hairetu = inputDay2.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday2 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay3 = "変数3"; //指定日を変数に
var hairetu = inputDay3.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday3 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay4 = "変数4"; //指定日を変数に
var hairetu = inputDay4.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday4 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay5 = "変数5"; //指定日を変数に
var hairetu = inputDay5.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday5 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay6 = "変数6"; //指定日を変数に
var hairetu = inputDay6.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday6 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay7 = "変数7"; //指定日を変数に
var hairetu = inputDay7.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday7 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay8 = "変数8"; //指定日を変数に
var hairetu = inputDay8.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday8 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay9 = "変数9"; //指定日を変数に
var hairetu = inputDay9.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday9 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay10 = "変数10"; //指定日を変数に
var hairetu = inputDay10.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday10 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay11 = "変数11"; //指定日を変数に
var hairetu = inputDay11.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday11 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
inputDay12 = "変数12"; //指定日を変数に
var hairetu = inputDay12.split("/");
var nowday = new Date(); //今日の日付
var xday = new Date(hairetu[0],hairetu[1] - 1,hairetu[2]);//基準になる日
var countday12 = Math.ceil((xday.getTime() - nowday.getTime()) / (1000 * 60 * 60 * 24));
if (countday1 < 0)document.write("111");
if (countday2 < 0)document.write("222");
if (countday3 < 0)document.write("333");
if (countday4 < 0)document.write("444");
if (countday5 < 0)document.write("555");
if (countday6 < 0)document.write("666");
if (countday7 < 0)document.write("777");
if (countday8 < 0)document.write("888");
if (countday9 < 0)document.write("999");
if (countday10 < 0)document.write("101010");
if (countday11 < 0)document.write("111111");
if (countday12 < 0)document.write("121212");
-->
</script>
お礼
コメントありがとうございます。 ご指摘の通りでした。 配列の添え字と常に要素数を混同する (多くのプログラミング言語では添え字はゼロから始まるので、1少なくなる) という、ありがちなミスですね。 サンプルコードを見た時点で -1 の意味を見抜けなかったのが敗因です。 お粗末様でした。 診立てが見当違いだったために明後日の方向を調べて時間を浪費してしまいました。