• 締切済み

この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>

  • golf90
  • お礼率55% (878/1594)

みんなの回答

  • warpspace
  • ベストアンサー率56% (83/147)
回答No.2

変数に対する処理が同じなので、共通処理を関数(Function)定義してやれば、短くなりますよ。

参考URL:
http://www.red.oit-net.jp/tatsuya/java/function.htm
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

最後の表示方法が良く分からなかったので適当です。 <script> var inputDays = [ "変数1", "変数2", /*...*/ ]; var nowday = new Date(); for (var i = 0; i < inputDays.length; i++) { var nums = inputDays[i].split('/'); var xday = new Date(nums[0], parseInt(nums[1],10) - 1, nums[2]); if (xday.getTime() < nowday.getTime()) { var bango = i + 1; document.write(bango+''+bango+''+bango); } } </script>

関連するQ&A

  • 曜日に関係なく、交互に表示させる。

    すみません。 思いっきり初心者です。 以前、同僚に協力してもらい、 2つの表示を1日毎に表示を変えるのを教えて貰ったんですが、 (下記内容) <!-- var now = new Date(); var xday = new Date(2004, 9-1, 15); count = Math.ceil( (xday.getTime() - now.getTime()) / (24*60*60*1000) ) var n = count % 2; if(n == 0){ document.write("<FONT style='font-size : 16px; color : #00cc00'>あ</font><BR>"); } else { document.write("い<BR>"); } //--> こんな感じでした。 これを2つ交互から <1日目:あ、2日目:い、3日目:う、4日目:あ、5日目:い、…> と表示させたいんですが、同僚は辞めてしまいどうしたらいいか解りません。 教えてください。 宜しくお願いします。

  • JavaScriptでイベントまでのカウントを作りたい。

    教えてください。JavaScript初心者です。 JavaScriptでイベントまでのカウントを作りたいのですが、 日にちを画像でだして、指定した日がきたら、画像で差し替えるようにしたいのですが、どうすればいいのでしょうか? ※現在は指定した日がきたら、「おめでとう」の文字がでるようにしてます。 書いたタグは下記になります。 アドバイスをお願いします。 <script language="JavaScript"><!-- var now = new Date(); var point = new Date(2009,8-1,25); var countdown = Math.ceil( ( point.getTime() - now.getTime() ) / (1000*60*60*24) ); if(countdown > 0) { document.write('countdown '); } else { document.write('おめでとう!'); } // --></script>

  • カウントダウンを何個も表示したいのですが・・・

    こんばんは。 「次の誕生日まであと○日」というカウントダウンを自動で表示したくて 検索してみたところ,JavaScriptで書くことが分かりました。 (JavaScriptの書き方は全く知りません。) とあるHPで,以下のように書けば良いと習い <SCRIPT LANGUAGE="JavaScript"> <!-- var now = new Date(); var xday = new Date(2004, 9-1, 15); count = Math.ceil( (xday.getTime() - now.getTime()) / (24*60*60*1000) ); document.write("<FONT style='font-size : 16px; color : #666666'>"); document.write("次の誕生日まであと "); document.write(count); document.write("日 です</FONT>"); //--> </SCRIPT> このように書いたら,無事できました。 しかし, 「次の誕生日まであと○日」 「○さんの誕生日まであと○日」 というように,改行して2つのカウントダウンを表示したく HTMLしか分からないので<br>を入れてみたのですが カウントダウンが2つとも表示されません。 改行して表示するにはどうしたら良いのでしょうか。 どうか教えてください。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • JavaScriptがマックのサファリでは、正しく動きません。

    11月24日まで、あと何日です。というように日にちを表示させたいのですが、WindowsのIE6なら正しく日付が表示されるのですが、マックのサファリだととんでもない数字が表示されます。 どなたか、どちらでも正しく表示させられる方法を教えてください。お願いいたします。 <script language="javascript"> <!-- var sakiday = new Date("2005/11/24"); var now = new Date(); var tokuteiday = Math.floor((sakiday.getTime()-now.getTime())/(24*60*60*1000)); document.write("<b>"+tokuteiday+"</b>"); //--> </script>

  • javascriptにおける指定日時までのカウントダウン

    いろいろなサイトを見回りながら「指定日までの残り日数と時間を表示する」のをjavascriptで動かしたいのですがリアルタイムに秒が進んでくれません。知識のある方はどうか間違えてる点のご教授お願いします。 <html> <head> <title>指定日までの残り日数と時間を表示する</title> </head> <body> <script language="JavaScript"><!-- function xDay(y,m,d,hh,mm,ss){ today = new Date(); xday = new Date(y,m-1,d,hh,mm,ss); dayMS = (24*60*60*1000,60*60*1000); days = Math.floor((xday.getTime()-today.getTime())/(24*60*60*1000)); hours = Math.floor(((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*60*1000)); minutes = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*1000))%60); seconds = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/1000)%60%60); myDisp=""; if (days != 0)myDisp+=days+"日と "; if (hours != 0)myDisp+=hours+"時間 "; if (minutes != 0)myDisp+=minutes+"分 "; myDisp+=seconds+"秒"; document.myForm.myFormDate.value = myDisp; setTimeout("xday()",1000); } // --></script> <form name="myForm"> <input type="text" size="35" name="myFormDate"> <script language="JavaScript"><!-- xday(); // --></script> </form> <script language="JavaScript"><!-- xDay(2008,9,13,15,00,00); // --></script> </body> </html>

  • カウントダウンのタグ

    おバカな質問でごめんなさいです(T_T) 笑わないでね?! 呆れないでね?! カウントダウンのカウンター(?)を置きたくて いろんなサイトを見て作ろうと思ったのですが これじゃ~表示されなくて… 何が足りないですか? ()の中ってどうするのですか? たぶん… メチャクチャだと思うのでここに質問すること事態 恥ずかしくて迷いましたが宜しくお願いします。 m( _"_ )mペコ♪ <!-- var set_y = 2005; var set_m = 9; var set_d = 5; var now = new Date(); var spday= new Date(set_y,set_m-1,set_d); a = (spday.getTime() - now.getTime())/(24*60*60*1000); a= Math.ceil(a); if(a >0) document.write("あと",a,"日で○○○です。"); else if(a==0) document.write("<h2>○○○開催!!</h2>"); else if(a <0) document.write("○○○",-a,"日過ぎました・・・"); --> <script language="javascript"> <!-- //--> </script>

    • ベストアンサー
    • HTML
  • 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>

  • document.write()の()内にタグを使用したいのですが

    質問いたします。 カウントダウンに関する質問なのですが、例えば以下のスクリプトの中でdocument.write()の()内の".happy."の部分の色を変えたいのですが、タグの挿入のルールが解りません。 document.write("誕生日まであと",<font color="#FF0000">happy</font>," 日") とか色々何パターンか試して見たのですが、間違っているようで表示されなくなってしまいます。 <SCRIPT language="JavaSCRIPT"> <!---- var set_y = 2006; //年 var set_m = 10; //月 var set_d = 01; //日 var now = new Date(); var spday= new Date(set_y,set_m-1,set_d); happy = (spday.getTime() - now.getTime())/(24*60*60*1000); happy = Math.ceil(happy); if(happy >0) document.write("誕生日まであと ",happy," 日"); //カウントダウン else if(happy ==0) document.write("誕生日おめでとう"); //当日 else if(happy <0) document.write("来年もよろしくね!"); //その後 //------> </script> 適切な場所に<font color="#FF0000">~</font>を入れる書き方をお教え頂ければ幸いでございます。よろしくお願い致します。

  • 指定日時までのカウントダウン

    指定日時までのカウントダウンで、数字を画像で表示させたモノを作りたいのですが、 いろんなサンプル等を見ながら作ってみたものの、うまくいきません。。。 アドバイスをお願い致します。 <html> <head> <title>指定日までの残り日数+時間を画像で表示する</title> <script language="JavaScript"><!-- function xDay(y,m,d,hh,mm,ss) { today = new Date(); xday = new Date(y,m-1,d,hh,mm,ss); dayMS = (24*60*60*1000,60*60*1000); days = Math.floor((xday.getTime()-today.getTime())/(24*60*60*1000)); hours = Math.floor(((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*60*1000)); minutes = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/(60*1000))%60); seconds = Math.floor((((xday.getTime()-today.getTime())%(24*60*60*1000))/1000)%60%60); if (seconds<10) { seconds = "0"+seconds; } if (minutes<10) { minutes = "0"+minutes; } if (hours<10) { hours = "0"+hours; } days += ""; for (i=0; i<days.length; i++) document.write("<img src='clock/"+days.charAt(i)+".gif'>"); hours += ""; for (i=0; i<hours.length; i++) document.write("<img src='clock/"+hours.charAt(i)+".gif'>"); minutes += ""; for (i=0; i<minutes.length; i++) document.write("<img src='clock/"+minutes.charAt(i)+".gif'>"); seconds += ""; for (i=0; i<seconds.length; i++) document.write("<img src='clock/"+seconds.charAt(i)+".gif'>"); } // --></script> </head> <body> <script language="JavaScript"><!-- xDay(2008,4,21,12,00,00); // --></script> </body> </html>

  • JavascriptからJavaへの変え方

    Javascriptで作ったものをJavaにしないといけなくなったのですが 私はJava初心者でまったくわかりません。 色々ネットで調べてみたのですが、どうも難しくて理解することができませんでした。 下にJavascriptで作ったものを載せてるのですがどなたかやり方を教えてもらえないでしょうか? <html> <head> <title>サンプル</title> <script type="text/javascript"> function jikoku() { dd = new Date(); document.F1.T1.value = dd.toLocaleString(); window.setTimeout("jikoku()", 1000); } </script> <script type="text/javascript"> mes = new Array(5); mes[0]="0"; mes[1]="1"; mes[2]="2"; mes[3]="3"; mes[4]="4"; date=(new Date()).getHours(); if( 0 <= date && date <= 5 ){ document.write(mes[0]); } else if( 6 <= date && date <= 10 ){ document.write(mes[1]); } else if( 11 <= date && date <= 16 ){ document.write(mes[2]); } else if( 17 <= date && date <= 19 ){ document.write(mes[3]); } else{ document.write(mes[4]); } </script> <script type="text/javascript"> function Random() { var kazu = Math.random(); kazu = kazu*100; kazu = Math.ceil(kazu); if( kazu<=9 ) document.write('<br/>○1<br/>'); else if( kazu<=19 ) document.write('<br/>○2<br/>'); else if( kazu<=29 ) document.write('<br/>○3<br/>'); else if( kazu<=39 ) document.write('<br/>○4<br/>'); else if( kazu<=49 ) document.write('<br/>○5<br/>'); else if( kazu<=59 ) document.write('<br/>○6<br/>'); else if( kazu<=69 ) document.write('<br/>○7<br/>'); else if( kazu<=79 ) document.write('<br/>○8<br/>'); else if( kazu<=89 ) document.write('<br/>○9<br/>'); else document.write('<br/>○10<br/>'); } Random() </script> <script language="JavaScript"> var imglist = new Array( "sample1.jpg", "sample2.jpg", "sample3.jpg", "sample4.jpg" ); var selectnum = Math.floor((Math.random() * 100)) % imglist.length; var output = "<img src=" + imglist[selectnum] + ">"; document.write(output); </script> </head> </html>