前提・実現したいこと
簡単な勤怠管理システムを作成しようとしています。
勤務開始・終了時間、休憩時間、勤務時間、出欠の情報を日毎に表にしたいのですが、下記がわかりません。
・日付や曜日を縦並びにする
・曜日を0~6ではなくテキスト表示にする
・日付と曜日の紐づけをする
初歩的な質問で申し訳ありませんが、ご存じの方がいらっしゃればお教えいただけると助かります。
該当のソースコード
JavaScript
1 <script language="JavaScript" type="text/javascript"> 2const weeks = ['日', '月', '火', '水', '木', '金', '土'] 3const date = new Date() 4const year = date.getFullYear() 5const month = date.getMonth() + 1 6const startDate = new Date(year, month - 1, 1) // 月の最初の日を取得 7const endDate = new Date(year, month, 0) // 月の最後の日を取得 8const endDayCount = endDate.getDate() // 月の末日 9const startDay = startDate.getDay() // 月の最初の日の曜日を取得 10let dayCount = 1 // 日にちのカウント 11let weekCount = 0 // 曜日のカウント 12let calendarHtml = '' // HTMLを組み立てる変数 13 14calendarHtml += '<table>' 15 calendarHtml += '<tr>' 16 17 // 日付の生成 18for (let i = 0; i < endDayCount; i++) { 19 calendarHtml += '<td>' + dayCount + '</td>' 20 dayCount++ 21} 22calendarHtml += '</tr>' 23calendarHtml += '<tr>' 24 25// 曜日の生成 26var weekday = [ "日", "月", "火", "水", "木", "金", "土" ] ; 27var wday = "(" + weekday[ startDate.getDay() ] + ")" ; 28 29for (let w = 0; w < endDayCount; w++) { 30 calendarHtml += '<td>' + weekCount + '</td>' 31 // 曜日のカウントが6(土曜日)まできたら0(日曜日)に戻す 32 if(weekCount >= 6) { 33 weekCount = 0; 34 } else { 35 weekCount++; 36 37 } 38} 39 calendarHtml += '</tr>' 40calendarHtml += '</table>' 41 42document.querySelector('#calendar').innerHTML = calendarHtml 43 44 45 46 </script>
試したこと
・曜日をテキスト表示にするため、
var weekday = [ "日", "月", "火", "水", "木", "金", "土" ] ;
をifに組み込んでみたり、置き換えを調べてみたのですが有効な方法が見つけられませんでした。
・日付と曜日を合致させるため、
for (let w = 0; w < endDayCount; w++) {
の初期値0の部分にwday(当月1日の曜日)を当ててみたりしたのですが、正常に動きませんでした。
補足情報(FW/ツールのバージョンなど)
VSCodeでJavaScript、HTML、CSSを使用して作成しています。
何か不足している情報などあればご指摘いただけると助かります。
よろしくお願いいたします。
追記
先ほど、教えていただいた通り修正したところ、日付と曜日の合致、テキスト表示はできました。
本当にありがとうございます。
上の表の通りに、下に並んでいる日付と曜日を並べ替えたいです。
こちらは、JavaScriptではなく、HTMLでの作業になるのでしょうか?
追記
綺麗に希望の形に並べられました。
本当にありがとうございます。
一応、最終的なコードを貼っておきます。
JavaScript
1 <script language="JavaScript" type="text/javascript"> 2const weeks = ['日', '月', '火', '水', '木', '金', '土'] 3const date = new Date() 4const year = date.getFullYear() 5const month = date.getMonth() + 1 6const startDate = new Date(year, month - 1, 1) // 月の最初の日を取得 7const endDate = new Date(year, month, 0) // 月の最後の日を取得 8const endDayCount = endDate.getDate() // 月の末日 9const startDay = startDate.getDay() // 月の最初の日の曜日を取得 10let dayCount = 1 // 日にちのカウント 11let weekCount = startDay // 曜日のカウント 12let calendarHtml = '' // HTMLを組み立てる変数 13 14calendarHtml += '<table>' 15 16 var weekday = [ "日", "月", "火", "水", "木", "金", "土" ]; 17 for (let i = 0; i < endDayCount; ++i) { 18 // 日付の生成 19 calendarHtml += '<tr>'+ '<td>' + dayCount + '</td>' 20 dayCount++ 21 // 曜日の生成 22 calendarHtml += '<td>' + weekday[weekCount] + '</td>'+ '</tr>' 23 if(weekCount >= 6) { 24 weekCount = 0; 25 } else { 26 weekCount++; 27 } 28 } 29 30calendarHtml += '</table>' 31 32document.querySelector('#calendar').innerHTML = calendarHtml 33 34 35 36 </script>
回答2件
あなたの回答
tips
プレビュー