一ヶ月分を一行で表示するカレンダーは?

[上に] [前に] [次に]
福井から都会へ [E-Mail] [HomePage] 1999/09/25(土) 08:02:21
一ヶ月分を一行で表示するカレンダーが
JavaScriptであったらいいなと思っています。
サンプルでいいのが有りませんでしょうか?

とほほ 1999/09/30(木) 00:32:00
単純にHTMLでカレンダーを書くのでは駄目なんですよね・・・きっと。
どの部分をJavaScriptにしたいのかよくわからないのですが・・・

<SCRIPT>
// 表示したい年
year = 1999;
// 各月の日数を得る
ds = new Array(13);
ds[1]=31; ds[2]=28; ds[3]=31; ds[4]=30;
ds[5]=31; ds[6]=30; ds[7]=31; ds[8]=31;
ds[9]=30; ds[10]=31; ds[11]=30; ds[12]=31;
if ((year % 4) == 0) { ds[2] = 29; }
if ((year % 100) == 0) { ds[2] = 28; }
if ((year % 400) == 0) { ds[2] = 29; }
// 曜日名を得る
dy = new Array(7);
dy[0]="日"; dy[1]="月"; dy[2]="火"; dy[3]="水";
dy[4]="木"; dy[5]="金"; dy[6]="土";
// 1月1日の曜日を得る
dw = (new Date(year, 0, 1)).getDay();
// 表示する
for (mm = 1; mm <= 12; mm++) {
  outmsg = mm + "月: ";
  for (dd = 1; dd <= ds[mm]; dd++) {
    outmsg += dd + "(" + dy[(dw++ % 7)] + ") ";
  }
  document.writeln(outmsg + "<BR>");
}
</SCRIPT>

ってな感じなのかなぁ・・・(はずしてる気もする・・・)

とほほ 1999/09/30(木) 00:33:58
あ、JavaScript未対応ブラウザのための、コメントアウトを忘れて
いました・・・<SCRIPT>の後ろに <!-- を、</SCRIPT>の前に //-->
を追記してください。

福井から都会へ 1999/09/30(木) 07:12:44
とほほサマありがとうございます。出力結果は、
→ 10月: 1(金) 2(土) 3(日) 4(月) 5(火)
になりました。
それですが、一寸長いようなので、
曜日は上、日付は下で それに土曜 日曜 祭日と
各色分けが出来たらもっといいと思っています。
でもとりあえず解決とします。
あぁ〜 でも やはり 上下表示色分け表示したい。

Nobu3 [E-Mail] [HomePage] 1999/09/30(木) 08:46:45
outmsg += dd + "(" + dy[(dw++ % 7)] + ") ";

のうち、「dd」が日付。「dy[dw++ % 7]」が曜日なので、

outdate+='<td>'+dd;
outday+='<td>'+dy[dw++ % 7];

などとして、最後にoutdateとoutdayを

outmonth='<table><tr>'+outdate+'<tr>'+outday+'</table>';

とでもしてやれば良いのではないでしょうか。

Nobu3 [E-Mail] [HomePage] 1999/09/30(木) 08:57:33
追加です。

曜日の配列を格納するところに、タグを使って色なども変更できます。文字列で格納しているので。
あと、文字列の中の「</table>」は「<\/table>」のように変更した方がいいです。忘れてました。

祝日は、別で用意しないといけないですね。
ds[1][0]=1; ds[1][1]=15;
とか、
ds[1][1]=true; ds[1][15]=true;
とか・・・でなんとかできるかも。

福〜都へ 1999/10/01(金) 07:03:26
Nobu3さん どうもっ
↓ ここのところで「オブジェクトを指定して下さい」
outdate+='<td>'+dd;
outday+='<td>'+dy[dw++ % 7];
とでるのですが、どうしたらいいのでしょう。

Nobu3 [E-Mail] [HomePage] 1999/10/01(金) 07:23:11
う〜。

var outdate,outday;

って書いてください。
変数の宣言をしないと「+=」などは使えません。
それでもだめなら、「dw++ % 7」を別で計算するとか・・・かな?

福〜都へ 1999/10/01(金) 08:08:03
うまく行きました。(月表示の後に undefined は出ますが…)
ありがとうございます。
とほほさんの outmsg は、変数宣言していないのにでます。
どうしてでしょう。
又、う〜。 でしたらごめんなさい。
color は 今晩挑戦してみます。

Nobu3 [E-Mail] [HomePage] 1999/10/01(金) 09:37:54
えっと、ごめんなさい。
var outdate,outday;

var outdate=outday='';
の方が良かったです。
「+=」を使うときは、宣言時に初期値を入れるのが正解でした。

「var」で宣言している。というのは一応あってると思うのですが、JavaScriptは「宣言しなくても変数が使える」ので、未知の変数は新しく生成されます。
だから、
outmsg= 'なんたらかんたら';
とかくと、「outmsg」という変数を作って、その上で「なんたらかんたら」を代入します。
しかし、
outdate+='なんたらかんたら';
というのは
outdate=outdate + 'なんたらかんたら';
になります。
つまり、右辺の「outdate」は存在していないので、エラーになるわけです。

福〜都へ 1999/10/01(金) 23:43:15
「var」で宣言する意味がよく分かりました。
ありがとうございました。
ところで、<\/tr>とかは、入れなくていいのでしょうか?
結果は同じでしたが…

Nobu3 [E-Mail] [HomePage] 1999/10/02(土) 04:00:11
HTML4.0では「</tr>」は省略できる「閉じタグ」になっています。
でも</tr>を補完できないブラウザもあるのかもしれません。

[上に] [前に] [次に]