質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

739閲覧

表の縦並び、日付に対応する曜日の表示、曜日をテキスト表示ができず困っています。

moe_ko

総合スコア5

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/06/14 01:12

編集2021/06/14 02:37

前提・実現したいこと

簡単な勤怠管理システムを作成しようとしています。
勤務開始・終了時間、休憩時間、勤務時間、出欠の情報を日毎に表にしたいのですが、下記がわかりません。

・日付や曜日を縦並びにする
・曜日を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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/06/14 01:22

現在どういう表示になっていて、それをどうしたいのでしょうか? スクリーンショット、図、テキストアートなどで具体的に説明してください。
moe_ko

2021/06/14 01:47

ご指摘いただきありがとうございます。 情報の追加をさせていただきました。 もし、ご存じであればお教えいただけると嬉しいです。 よろしくお願いいたします。
guest

回答2

0

ベストアンサー

・日付や曜日を縦並びにする

<tr><td>日付</td><td>曜日</td></tr> という構造で出力する必要がありますから、0からendDayCountの範囲のループ2つを1つにまとめる必要があります。

js

1var weekday = [ "日", "月", "火", "水", "木", "金", "土" ]; 2for (let i = 0; i < endDayCount; ++i) { 3 calendarHtml += '<tr>' 4 calendarHtml += `<td>${i}</td>`; 5 calendarHtml += `<td>${weekday[(startDay + i) % 7]}</td>`; 6 calendarHtml += '</tr>' 7}

投稿2021/06/14 02:10

編集2021/06/14 02:36
int32_t

総合スコア20832

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moe_ko

2021/06/14 02:34

ご回答ありがとうございます。 綺麗に並べることができました。 本当にありがとうございます。
guest

0

日付と曜日を合致させる

let weekCount = 0 // 曜日のカウント

let weekCount = startDay; // 曜日のカウント

曜日をテキスト表示にする

calendarHtml += '<td>' + weekCount + '</td>'

calendarHtml += '<td>' + weekday[weekCount] + '</td>';

あとはtableの組み方だけですね。

投稿2021/06/14 01:23

編集2021/06/14 01:25
itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moe_ko

2021/06/14 01:40

ご回答ありがとうございます。 試してみたところ、曜日と日付が合致し、表示もテキストになりました。 ここ数日、ずっと調べていたことがあっさり解決されて感動しました。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問