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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

Q&A

解決済

1回答

1280閲覧

プルダウンで選択した月のデータを表示したいのですが、うまくいかず困っています。

moe_ko

総合スコア5

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

0グッド

0クリップ

投稿2021/06/15 08:30

編集2021/06/16 07:29

前提・実現したいこと

簡易的な勤怠システムの作成をしています。
日毎のデータを表形式で配置し、プルダウンで表示するデータの月を変更できる仕様にしたいのですが、うまくいきません。

該当のソースコード

JavaScript

1$(function() { 2 var date = new Date(); 3 var year = date.getFullYear(); 4 var weekday = [ "日", "月", "火", "水", "木", "金", "土" ]; 5 6 // 選択された年月日を取得 7 var selected_year = document.getElementById("id_year"); 8 var selected_month = document.getElementById("id_month"); 9 let selected_dayCount = 1; // 日にちのカウント 10 let calendarHtml = ''; // HTMLを組み立てる変数 11 12 // プルダウン 13 $(function() { 14 /*ループ処理*/ 15 optionLoop = function(start, end, id) { 16 var i, opt; 17 opt = null; 18 for (i = end; i >= start ; i--) { 19 if (i === date) { 20 opt += "<option value='" + i + "' selected>" + i + "</option>"; 21 } else { 22 opt += "<option value='" + i + "'>" + i + "</option>"; 23 } 24 } 25 return document.getElementById(id).innerHTML = opt; 26 }; 27 28 /*関数設定*/ 29 optionLoop(1990, year, 'id_year'); 30 optionLoop(1, 12, 'id_month'); 31 }); 32 33 34 // カレンダー 35 calendarHtml += '<table>'; 36 37 // 見出し 38 calendarHtml += '<tr>'+'<th>'+"日"+'</th>' 39 +'<th>'+"曜日"+'</th>' 40 +'<th>'+"開始"+'</th>' 41 +'<th>'+"終了"+'</th>' 42 +'<th>'+"休憩(h)"+'</th>' 43 +'<th>'+"勤務時間(h)"+'</th>' 44 +'<th>'+"出欠"+'</th>' 45 +'</tr>'; 46 47 // 日付 48 $('#id_year,#id_month').change(function() { 49 50 selected_year = $('#id_year').val(); 51 selected_month = $('#id_month').val(); 52 53 //選択月初日 54 var selected_startDate = new Date( selected_year, selected_month - 1, 1); 55 //月の最後の日 56 var selected_endDate = new Date(selected_year, selected_month, 0); 57 // 月の末日 58 var selected_endDayCount = selected_endDate.getDate(); 59 // 月の最初の日の曜日を取得 60 var selected_startDay = selected_startDate.getDay(); 61 let selected_weekCount = selected_startDay; // 曜日のカウント 62 63 for (let i = 0; i < selected_endDayCount; ++i) { 64 // 日付の生成 65 calendarHtml += '<tr>'+ '<td>' + selected_dayCount + '</td>'; 66 selected_dayCount++; 67 // 曜日の生成 68 calendarHtml += '<td>' + weekday[selected_weekCount] + '</td>'+ '</tr>'; 69 if(selected_weekCount >= 6) { 70 selected_weekCount = 0; 71 } else { 72 selected_weekCount++; 73 } 74 } 75 }) 76 calendarHtml += '</table>'; 77 document.querySelector('#calendar').innerHTML = calendarHtml; 78});

HTML

1 <h1>勤怠一覧</h1> 2 3 </div> 4 <div class="select"> 5 6 <select class="cl_year" id="id_year"> 7 </select> 8 <a href="#" class="moji"> 910 </a> 11 <select class="cl_month" id="id_month" name="name_month"> 12 </select> 13 <a href="#" class="moji"> 1415 </a> 16 17 <a href="#" class="hyoji">表示</a> 18 19 <table class="tableAll"> 20 <tr> 21 <th>実労働時間(h)</th> 22 <td>h</td> 23 <th>残業時間(h)</th> 24 <td>h</td> 25 <th>休憩時間(h)</th> 26 <td>h</td> 27 </tr> 28 </table> 29 </a> 30 31 <a href="#" class="logout">ログアウト</a> 32 </div> 33 34 <table> 35 <div id="calendar"></div> 36 </table> 37 38 <script type="text/javascript" src="itiran.short.js"></script>

試したこと

JavaScriptだけで作成する方法がヒットしなかったため、jqueryも入れてみましたが、うまく動作していないようです。

補足情報(FW/ツールのバージョンなど)

不足情報あればご指摘お願いいたします。

何かご存じの方がいらっしゃいましたらお教えいただけると助かります。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

年と月は普通にselectで書けばよいでしょう
年と月がきまれば
new Date("2020-06-02")のような渡し方をすればその月のデータになるでしょう

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 const y=document.querySelector('#id_year'); 4 const m=document.querySelector('#id_month'); 5 const v=document.querySelector('#view'); 6 document.querySelector('#chk').addEventListener('click',()=>{ 7 v.textContent=new Date(`${y.value}-${m.value}-01`); 8 }); 9}); 10</script> 11<select class="cl_year" id="id_year"> 12<option value="2021">2021</option> 13<option value="2020">2020</option> 14<option value="2019">2019</option> 15</select> 1617<select class="cl_month" id="id_month"> 18<option value="01">1</option> 19<option value="02">2</option> 20<option value="03">3</option> 21</select> 2223<input type="button" value="check" id="chk"> 24<div id="view"></div>

投稿2021/06/15 09:45

編集2021/06/16 00:18
yambejp

総合スコア116724

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

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

moe_ko

2021/06/16 07:31

ご回答ありがとうございます。 これは、ボタンを押さなければ動作しないコードでしょうか……? ボタンの作成を省きたいです。
yambejp

2021/06/16 07:38

選択した瞬間に処理したいならこう window.addEventListener('DOMContentLoaded', ()=>{ const y=document.querySelector('#id_year'); const m=document.querySelector('#id_month'); const v=document.querySelector('#view'); const view=()=>v.textContent=new Date(`${y.value}-${m.value}-01`); view(); document.addEventListener('input',e=>{ if(e.target.closest('select')) view(); }); });
moe_ko

2021/06/16 08:16

ご丁寧にありがとうございます。 助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問