週番表を作りたい



0   名前: x-side : 2007/07/08(日) 12:18  ID:2DAsSw0/ sub-tF
Javascriptを使って週番表を作りたいのですが、
どこを探しても週ごとにメッセージを変えるというものがありません。
どうやったらよいのでしょうか?

ちなみに、週番表は担当者が一覧になっていてその週の担当者が太字になるようにしたいです。

1   名前: 匿名 : 2007/07/08(日) 12:18  ID:xX0Z/4gQ sub-Cz
> 週ごと
function getWeek (yyyy, mm, dd) {
    var d = new Date (yyyy, mm - 1).getDay ();
    return parseInt ((d + dd - 1) / 7);
}

getWeek (2007, 7,  6);  // 0(第 1 週)
getWeek (2007, 7, 31);  // 4(第 5 週)

2   名前: x-side : 2007/07/08(日) 12:18  ID:tVbhompr sub-tF
もう少し具体的に書いてください。初心者なので。

3   名前: 匿名 : 2007/07/08(日) 12:18  ID:DmPImZa3 sub-Cz
>>0
> 週ごとにメッセージを変える
var Messages = [ '第一週', '第二週', '第三週', '第四週', '第五週' ];

var D = new Date;        // 今日の日付情報
var d = D.getDate ();    // 今日の日付
D.setDate (1);           // 情報を今月の第 1 日にセット
var Week = parseInt ((D.getDay () + d - 1) / 7);    // 詳細は後述

document.write ('<p>' + Messages[Week] + '<\/p>');  // 週に応じたメッセージ出力

> もう少し具体的に
2007/08
Sun  Mon  Tue  Wed  Thu  Fri  Sat
 .    .    .    1    2    3    4 
 5    6    7    8    9   10   11
12   13   14   15   16   17   18

今日が第何週か = ((第 1 日の前の点の数 + 第 1 日から今日までの日数) / 7) の整数部分

> 初心者なので

http://www.marguerite.jp/Nihongo/HowToMakeYourWeb/JavaScript/index.html
http://chaichan.web.infoseek.co.jp/src/2ndthema.htm

4   名前: x-side : 2007/07/08(日) 12:18  ID:c72kcjbq sub-tF
この場合、担当者が5人までなら回せますが、6人以上になるとできませんよね?
それは改善できないのでしょうか?

5   名前: 匿名 : 2007/07/08(日) 12:18  ID:npMCSgti sub-Cz
>>4
貴方は『週ごとにメッセージを変える』コードを要求したので、私は >>3 に「今日が第何週かによってメッセージを変える」コードを書いた。普通、一ヶ月は多くても第五週までです。

貴方が何を言ってるのかさっぱり分かりません。

6   名前: 匿名希望 : 2007/07/08(日) 12:18  ID:D/mQtTzV sub-Ax
一週間たつごとに担当者を変えるってことでしたら、

「次の日曜日以降になったら担当者を次の人にまわす」という考えでいけばいいのでは?

んで、担当者が最後までいったら、また最初の担当者にするっていう方向でいけば大丈夫かと。

ただ…、
現在の担当者をあらわすインデックスと
現在の担当者において、当番になった日の日付
の2つを何かに記憶させておく必要があるかもしれませんが…。

7   名前: 匿名 : 2007/07/08(日) 12:18  ID:epW2eUw6 sub-8t
function getWeek(d) {
var s = new Date(1970, 0, 4);
return Math.floor(((d - s) / 86400000) / 7);
}
onload = function() {
var member = Array("佐藤", "鈴木", "田中", "渡辺", "伊藤", "斉藤");
var c = getWeek(new Date()) % member.length;
document.body.innerHTML = document.body.innerHTML.replace(member[c], "<strong>" + member[c] + "</strong>");
alert("今週は" + member[c] + "さんの担当です");
}

8   名前: 匿名 : 2007/07/08(日) 12:18  ID:npMCSgti sub-Cz
>>6-7
> 一週間たつごとに担当者を変える

あー、なるほどです。
function getMember (yyyy, mm, dd) {
    var members = Array.prototype.slice.call (arguments, 3);
    var s = new Date (yyyy, mm - 1, dd);
    var t = new Date;
    var d = Date.UTC (1970, 0, s.getDay () + 1);
    var w = Math.floor ((t - s + d) / 1000 / 60 / 60 / 24 / 7);
    return members[w % members.length + (w < 0 ? members.length : 0)];
}

// 2007-07-07 を第一週とし、日曜日ごとに 4 人でローテーションしたとき、今日の当番
document.write ('<p>' + getMember (2007, 7, 7, '佐藤', '鈴木', '田中', '渡辺') + '<\/p>');

9   名前: x-side : 2007/07/08(日) 12:18  ID:81HrrFBI sub-tF
説明不足で申し訳ありませんでした。
8の方法でできました。
ありがとうございました。

一覧へ戻る