プロが教える店舗&オフィスのセキュリティ対策術

scriptについて質問です。
今実現したいことは、一ヶ月の中で、
今は第何週目かを自動計算させてselectboxに表示させたいです。例として:1月なら5日~11日が第1週目、12日~18日は第2週目、
19日~25日は第3週目、26日~2月1日が第4週目にしたいです。
下記は自分が考えたソースですが、正確ではありません。
ご教示をお願いします。
<scriptソース>
var weekdays = [ "日", "月", "火", "水", "木", "金", "土" ];

var today = new Date();

var out = "";
var syu= new Date(n.getFullYear(), n.getMonth(), 1);
//out += "第" + Math.floor(( + 6 ) / 7) + weekdays[today.getDay()] + "曜日\n";
out = Math.floor((today.getDate() - today.getDay() + 12 ) / 7);

if (weekdays[syu.getDay()] != "月"){
out = out-1;
}
document.getElementById("selFromDate1").options[out-1].selected=true;

<selectboxソース>
<b>第</b>
<select name="selFromDate1" id="selFromDate1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<b>週目</b>

A 回答 (4件)

>後は、goボタンで動くのではなく、selectboxの初期表示を今の週にします。



スクリプトの最初に
window.onload=function(){setSelect();}
を書いておけばいけるはずです。
    • good
    • 0

#1です。

ちなみにこんな感じでどうでしょ?

<script>
function setSelect(){
var d0 =new Date();
d0.setDate(d0.getDate()-(d0.getDay()+6)%7);
var d1=new Date(d0.getFullYear(),d0.getMonth(),1);
d1.setDate((9-d1.getDay())%7);
var d2=(d0.getDate()-d1.getDate())/7+1;
document.getElementById("selFromDate1").selectedIndex=(d2-1);
}
</script>
<b>第</b>
<select name="selFromDate1" id="selFromDate1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<b>週目</b>

<input type="button" value="go" onclick="setSelect()">

考え方
d0=今週の月曜日
d1=今週の月曜日の月の最初の月曜日
d2=d1からd0までの経過週
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
教えていただいた通りで問題ありません。
後は、goボタンで動くのではなく、selectboxの初期表示を今の週にします。

お礼日時:2015/01/20 14:16

>例として:1月なら5日~11日が第1週目、12日~18日は第2週目、



では「1月1日」は何週目になるんでしょう?

EXCELのWEEKNUM関数では「1月1日」は「第1週目」になります。

週の初めを「月曜」とした場合は

月 火 水 木 金 土 日
      1 2 3 4  1週目
5 6 7 8 9 10 11  2週目
12 13 14 15 16 17 18  3週目

とするのが一般的のようですが?
    • good
    • 0

月の最初の月曜を基準にするとかなり変な動作になりますが大丈夫?


たとえば2015/2/1は5週目になりますがユーザーが混乱しませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!