• ベストアンサー

ホームページのカレンダー

お店のページに特定の日の色が変えられるカレンダーをのせたいのです。何も書き込めなくていいのです。 JavaScriptのカレンダーをいろいろ捜して見ました。 コピペをするだけで 休日の色、曜日別に色分け、当日の色が変えられて 便利なのですが、 特定の1日だけを変えることのできる カレンダーはないのでしょうか? 今のままでは休みの日だけ別に書いてカレンダーは 普段どおりというカッコが悪い状態なので困ってます。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.4

こんな感じでしょうか? 独学なのでお粗末かも知れませんが、参考になれば幸いです。 <SCRIPT language="JavaScript"> <!-- // 表示月数(x) x=2; // cldr = ""; day = new Date(); thisday = day.getDate(); day.setDate(1); month = day.getMonth() + 1; year = day.getYear(); if(year < 2000) year += 1900; numdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31); if((year%4 == 0) && (year%100 != 0) || (year%400 == 0)) numdays[1] = 29; for(j = 0; j < x; j++){ date = new Date(); date.setDate(1) thisMonth = date.getMonth() + 1 + j; date.setMonth(thisMonth - 1); if(thisMonth > 12){ if(thisMonth % 12 == 1){ year++; } } thisMonth = date.getMonth() + 1; date.setDate(1); firstDay = date.getDay(); if(thisMonth == 1){holiday1 = 1; holiday2 = 14-(firstDay+5)%7; holiday3 = -1} else if(thisMonth == 2){holiday1 = 11; holiday2 = -1; holiday3 = -1} else if(thisMonth == 3){ ed = 20.8431 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4); holiday1 = Math.floor(ed); holiday2 = -1; holiday3 = -1; } else if(thisMonth == 4){holiday1 = 29; holiday2 = -1; holiday3 = -1} else if(thisMonth == 5){holiday1 = 3; holiday2 = 4; holiday3 = 5} else if(thisMonth == 6){holiday1 = -1; holiday2 = -1; holiday3 = -1} else if(thisMonth == 7){holiday1 = 21-(firstDay+5)%7; holiday2 = -1;holiday3 = -1} else if(thisMonth == 8){holiday1 = -1; holiday2 = -1; holiday3 = -1} else if(thisMonth == 9){ holiday1 = 21-(firstDay+5)%7; ed = 23.2488 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4); holiday2 = Math.floor(ed); holiday3 = -1 } else if(thisMonth == 10){holiday1 = 14-(firstDay+5)%7;; holiday2 = -1; holiday3 = -1} else if(thisMonth == 11){holiday1 = 3; holiday2 = 23; holiday3 = -1} else if(thisMonth == 12){holiday1 = 23; holiday2 = -1; holiday3 = -1} // 特別な日 // 1月から12月まで個別設定。 // event1,event2(予備)に日を記入。無ければ「-1」 if(thisMonth == 1) {event1 = -1; event2 = -1;} else if(thisMonth == 2) {event1 = -1; event2 = -1;} else if(thisMonth == 3) {event1 = -1; event2 = -1;} else if(thisMonth == 4) {event1 = 15; event2 = -1;} else if(thisMonth == 5) {event1 = 15; event2 = -1;} else if(thisMonth == 6) {event1 = -1; event2 = -1;} else if(thisMonth == 7) {event1 = -1; event2 = -1;} else if(thisMonth == 8) {event1 = -1; event2 = -1;} else if(thisMonth == 9) {event1 = -1; event2 = -1;} else if(thisMonth == 10){event1 = -1; event2 = -1;} else if(thisMonth == 11){event1 = -1; event2 = -1;} else if(thisMonth == 12){event1 = -1; event2 = -1;} // // 文字サイズ ymsize = 20; dysize = 16; // // 色 color0 = "#cccc00"; // 今日の背景 color1 = "#00ff00"; // 特別な日 color2 = "#0000ff"; // 日曜,金曜 color3 = "#ff0000"; // 水曜,祝祭日 // wd = Math.round( dysize * 1.4); cldr += "<table border='0' style='float : left;'><tbody><tr><td>" cldr += "<table border='0' style='font-weight : bold; font-size : "+ dysize +"px;' bgcolor='#ffffff'>"; // カレンダーTable内の書式 cldr += "<tr bgcolor='#000000' align=center><th colspan=7><font color='#ffffff' style='font-size : "+ ymsize +"px;'>"+year+"年"+thisMonth+"月</font></th></tr>"; // 年月セルの書式 cldr += "<tr align=center><td width='"+ wd +"'><font color='"+ color2 +"'>日</font></td><td width='"+ wd +"'>月</td><td width='"+ wd +"'>火</td><td width='"+ wd +"'><font color='"+ color3 +"'>水</font></td><td width='"+ wd +"'>木</td><td width='"+ wd +"'><font color='"+ color2 +"'>金</font></td><td width='"+ wd +"'>土</td></tr>"; for(sunday = 1-date.getDay(); sunday <= 36; sunday +=7){ cldr += "<tr align=center>"; for(i = sunday; i < sunday + 7; i++){ if((i > 0) && (i <= numdays[thisMonth-1])){ date.setDate(i); today = date.getDay(); if((thisday == i)&&(month == thisMonth)){ cldr += "<td bgcolor='"+ color0 +"'>" }else{ cldr += "<td>"; } if((i == event1)||(i == event2)){ cldr += "<font color='"+ color1 +"'>"+ i +"</font>"; // 特別な日の書式 }else if((today == 0)||(today ==5)) { cldr += "<font color='"+ color2 +"'>"+ i +"</font>"; // 日曜,金曜の書式 }else if((today == 3)||(i == holiday1)||(i == holiday2)||(i == holiday3)||((today == 1)&&((i-1 == holiday1)||(i-1 == holiday2)||(i-1 == holiday3)))){ cldr += "<font color='"+ color3 +"'>"+ i +"</font>"; // 水曜,祝祭日の書式 }else{ cldr += i; // その他の日の書式 } cldr += "</td>"; }else{ cldr += "<td> </td>"; } } cldr += "</tr>"; } cldr += "</table>"; cldr += "</td></tr></tbody></table>" } document.write(cldr); --> </SCRIPT>

gamera190
質問者

お礼

ありがとうございます。 大きさは文字を大きくすればいいのですよね。 完璧です。嬉しいです。 本当にありがとうございました。

その他の回答 (3)

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.3

http://www004.upp.so-net.ne.jp/sekiuchi/js/contents/hcldr3.html 他のサイトになりますがこちらはどうでしょうか。 私はココを参考にしました。毎年の休日も計算してくれるので便利です。 仮に、これで特定の1日が『毎月15日』であり、太字にする場合の加工方法です。 『// 日付の書き込み』以降の以下の行の後に、1行追加します。(59行目付近) > if(thisday == i) cldr += "<td bgcolor='#00ff00'>"; // 今日の背景色を緑にする > else cldr += "<td>"; if(i == 15) cldr += "<b>"; (↑この1行を追加) 厳密にはこれだけでは不足なのですが、表示上はこれで可能です。 太字ではなく、背景色を変えたいという場合は「今日の背景色」と重なった場合の調整が必要となり、文字色を変えたいとなると土日祝祭日と重なった場合の調整が必要となってきます。 gamera190さんの必要としているカレンダーの条件はどのようなものでしょう ・表示は1ヶ月だけで良いのか、2ヶ月以上必要なのか? ・特定の1日は毎年なのか、毎月なのか、毎週なのか? ・特定の1日は年,月毎に変動するのか? ・休日などに重なった際に振替があるのか? ・表示方法の指定は? 条件によって、加工箇所も増えていってしまいます。 個人間のやりとりを禁止しているこういった質問サイトでは、javascriptソース丸々の話になってくると向いてないかもしれません。

gamera190
質問者

補足

上の所に行ってきました。 何とか自分でいじってみようとしましたが だめでした。 とりあえず必要なのは 金曜と日曜日の日付文字を青にして水曜日が赤 ここは何とかできました。祝日の赤はそのままで 特定の日は文字の色を変更したいです。 優先順位は特定の日>金と日と水>祝日の文字色に したいです。 表示はできれば2ヶ月がよいです。 欲を出せば縦じゃなくて横。 囲みをなくしてサイズと文字の大きさを変更できれば 理想の形に仕上がります。 よろしくお願いします。

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.2

私は、カレンダー表示するjavascriptを加工し、特定日を別の色に変更して表示するようにしています。 プログラムの知識があれば加工は容易だと思うのですが、そうでないと難しいですよね。 個人のサイトへ誘導することは規約で禁止されているので直接提供できないのが残念です。 さて、javascriptでカレンダーを表示させる場合ですが1日ごとに条件判断をして表示方法を決めていると思います。 【1日】 「この日は日曜日か?」 「この日は土曜日か?」 「この日は祝祭日か?」 「この日は今日か?」 これらの条件に合っていれば、それぞれに合わせて文字色や背景色を変えて表示させます。 以後 【2日】 【3日】   ↓ 【晦日】 と続けた結果、1ヶ月のカレンダーとなります。 最初に書いた4つの条件、これに更にgamera190さんのいう 「この日は[特定の1日]か?」 という条件を加えて、文字色や背景色を指定する事になります。 基本としたいjavascript素材の提供サイトなどお教え頂ければ、加工のポイントなどお教えできるかもしれません。(私でなくとも)

gamera190
質問者

補足

http://www.ne.jp/asahi/qpon/b/java/java40.htm 今回はこのカレンダーをつかわさせていただいてます。javascriptについてはまったくわかりません。 上記のページのカレンダーみたいな感じで 使いやすそうで加工できそうなのがあったら 教えてください。よろしくお願いします。

  • Peater
  • ベストアンサー率32% (13/40)
回答No.1

CGIを使ったものだと、毎週火曜日とか、第1,第3木曜日とか、指定できるものもありますが、難しいですかね。

参考URL:
http://www3.biwako.ne.jp/~nobuaki/webcal/
gamera190
質問者

お礼

ご回答ありがとうございます。 ページを見てきました。 すこし、理想と違ってました。

関連するQ&A

  • iPhoneのカレンダーアプリについて

    カレンダーアプリをGoogleカレンダーと同期させて使っています。 今までは予定が赤色で表示されていたのですが、色分け出来たら便利だと思い、PCからGoogleカレンダーを操作して、色分けしました。 具体的には、マイカレンダーに仕事、遊びなどのカテゴリを追加して色分けしました。 PC上からは色分けされた予定は確認できたのですが、iPhoneのカレンダーアプリで確認すると、赤色にしてある予定しか見れず、今回新しく追加した色の予定がみれません。 どうすれば他の色も表示できるでしょうか??

  • 週間カレンダー vbscript

    質問です 現在ASPとvbscriptを使って、スケジュール管理システムを作成しています。 その中で、週間・月間・年間の3つのカレンダーの作成をしようと考えています。 現在の状況としては月間カレンダーは完成して、週間カレンダーを作成しているところです。 日曜始まりの月間カレンダーから、日付データを取得して週間カレンダーを作成します。 当日を含む週を表示したいです。 検索してみるとjavascriptのソースは見つかりましたが、 vbscriptでの作成を前提としています。 javascriptのソースの自力での解読も試みましたがお手上げです。 「第○週の○曜日」という意識はせず、 表示月の月始め日(1日)が何曜日か調べて、 1日が日曜でなければそこからさかのぼって 日曜日になる日付を求めるといいらしいのですが…。 丸投げする形になって申し訳ありませんが、 どなたか力を貸していただけませんか。

  • ヤフーカレンダーで特定の曜日だけを休みに

    ヤフーカレンダーで特定の曜日だけを予め休日に設定できる方法などは ありますでしょうか? 営業の案内に使用していますが  いまのままですと 毎回 日曜日、月曜日をて入力しないといけないので。。。 わかる方おりましたら お願いします

  • エクセルでのカレンダー表記

    エクセル2003なのですが セルにカレンダー表記をさせたいのですが 挿入→オブジェクトでのカレンダーでした場合 どうしても 当日が反転してるので セル自体に日&曜日を入れようと思うのですが =IF(B5="","",MID("日月火水木金土",WEEKDAY(B5),1))で曜日 =IF(B1="","",IF(B2="","",(DATE(1988+B1,B2,1))))で日を計算させた場合 毎月一番左(上)は1日になってしまいます。 実際のカレンダーのように 曜日が 月火水木金土日 の順番で 1wごとに表記させたいのですがどうすればいいのでしょうか? 年 月は別のセルに入力はする予定です

  • CGIカレンダーの改造

    今日一日頑張っては見たのですが設置するだけで精一杯でした。 http://cgi-design.net/のCGIプログラムの中のスケジュールの中に スケジュールカレンダー2というのがあるのですが このカレンダーを改造したいのです。 (1)曜日の色は一色で何の影響もうけない。 (2)土曜日の日付を変える欄があるのですがこれを水曜日に変える。 (3)特定の日の日付を増やす。 (4)homeの横にもうひとつリンクをつける (5)できれば過去の月は表示したくないです。 宜しくお願いします。

    • ベストアンサー
    • CGI
  • 来年のカレンダーですが、困りますよね。

       来年のカレンダー見ました?    祝日が4日も土曜日に重なって、休みを損した気分です。    政府も、土曜日と重なっても振替休日くれませんかね。      この不景気に逆に、休み増やさなあかんでしょ。    政治家考えてよ。

  • ACCESSカレンダーの利用について

    ACCESSのカレンダー機能を使ってフォームを作っています。 作りたいものはカレンダーで日付をクリックしたら、テキストボックスに ####/##/## という形で表示され、さらに  (  )年(  )月(  )日( )曜日 の各()内にそれぞれカレンダーで選らんだものが反映されるというものです。 カレンダーから選らんだ日付がテキストボックスに ####/##/## の形で表示されるところまでは出来ました。 この値を別ボックスに、年・月・日・曜日をわけて反映させるにはどうしたらよいのでしょうか? ちなみに、####/##/##の部分はカレンダーからだけでなく、普通に入力しても年・月・日・曜日ボックスに反映させたいです。 どの本にものってなかったので助言をおねがいします。

  • 簡素なカレンダーを作りたい

    マス目があって、曜日と数字のみの簡素なものです。 色も黒だけです。祝日や○○の日なども、いっさい書きません。 ただ、下に「○○年○月」と表示できて、その年月を変えると、簡単に次の月のカレンダーが表示できるようにしたいのです。 たぶんエクセルを使うんだと思いますが、かじった程度なので、簡単なことから教えて頂けると大変助かります。 宜しくお願いいたします。

  • JavaScriptで年間カレンダーを表示させたい

    サイトに、年間カレンダーを表示しているのですが、 現在テーブルで作成しており、 更新の時、日や曜日を再度作り直すのが大変です。 そこで、何か方法はないかと JavaScriptのカレンダーのソースはいろいろ見てみたのですが、 月間のカレンダーの表示の仕方は分かったのですが、 年間カレンダーのものが見当たらず、困っています。 シンプルな今年1年間のカレンダーを一括表示できる参考ソース等が ありましたら、教えてもらえないでしょうか? また、スクリプトは初心者なので、分かりやすい説明だと助かります。

  • カレンダーの処理が分かりません

    休みの日を判定しようと思います。 土曜日か日曜日なら曜日を表示させるプログラムです。 2005/6/26日は日曜日なのですが「日曜日」と表示されません。どこがいけないのでしょうか? public void day() { Calendar calendar = Calendar.getInstance(); int y = 2005; int m = 6; int d = 26; calendar.set(y,m,d); // 日曜日のとき if(calendar.get(calendar.DAY_OF_WEEK) == calendar.SUNDAY){ System.out.println("日曜日"); } // 土曜日のとき else if(calendar.get(calendar.DAY_OF_WEEK) == calendar.SATURDAY){ System.out.println("土曜日 } }

    • ベストアンサー
    • Java

専門家に質問してみよう