前提・実現したいこと
プルダウン(年月)の切り替えで、表の中身(年月に対応する日付と曜日)を切り替えたいです。
現在、プルダウンを切り替えるたびに、下にどんどん日付と曜日が追加される形になってしまっています……。
何かご存じの方、いらっしゃればお教えいただけると助かります。
該当のソースコード
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 document.getElementById("id_hyoji").onclick = function() { 49 // ここに#buttonをクリックしたら発生させる処理を記述する 50 }; 51 // ???????? 52 53 $('#id_year,#id_month').change(function() { 54 55 selected_year = $('#id_year').val(); 56 selected_month = $('#id_month').val(); 57 58 //選択月初日 59 var selected_startDate = new Date( selected_year, selected_month - 1, 1); 60 //月の最後の日 61 var selected_endDate = new Date(selected_year, selected_month, 0); 62 // 月の末日 63 var selected_endDayCount = selected_endDate.getDate(); 64 // 月の最初の日の曜日を取得 65 var selected_startDay = selected_startDate.getDay(); 66 let selected_weekCount = selected_startDay; // 曜日のカウント 67 68 for (let i = 0; i < selected_endDayCount; ++i) { 69 // 日付の生成 70 calendarHtml += '<tr>'+ '<td>' + selected_dayCount + '</td>'; 71 if(selected_dayCount>=selected_endDayCount){ 72 selected_dayCount = 1; 73 }else{ 74 selected_dayCount++; 75 } 76 // 曜日の生成 77 calendarHtml += '<td>' + weekday[selected_weekCount] + '</td>'+ '</tr>'; 78 if(selected_weekCount >= 6) { 79 selected_weekCount = 0; 80 } else { 81 selected_weekCount++; 82 } 83 } 84 calendarHtml += '</table>'; 85 document.querySelector('#calendar').innerHTML = calendarHtml; 86 }) 87}); 88
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <script 5 src="https://code.jquery.com/jquery-3.4.1.slim.min.js" 6 integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8=" 7 crossorigin="anonymous"></script> 8 <meta charset="utf-8"> 9 <link rel="stylesheet" href="css/itiran.css"> 10 11 <title>勤怠管理システム</title> 12 </head> 13 14 <body> 15 <div class="honbun"> 16 <div class="top"> 17 <h1>勤怠一覧</h1> 18 </div> 19 <div class="select"> 20 21 <select class="cl_year" id="id_year"> 22 </select> 23 <a href="#" class="moji"> 24 年 25 </a> 26 <select class="cl_month" id="id_month" name="name_month"> 27 </select> 28 <a href="#" class="moji"> 29 月 30 </a> 31 32 <a href="#" class="hyoji"> 33 <input type="button" value="表示" id="id_hyoji"/> 34 <div id="view_hyoji"></div> 35 </a> 36 37 <table class="tableAll"> 38 <tr> 39 <th>実労働時間(h)</th> 40 <td>h</td> 41 <th>残業時間(h)</th> 42 <td>h</td> 43 <th>休憩時間(h)</th> 44 <td>h</td> 45 </tr> 46 </table> 47 </a> 48 49 <a href="#" class="logout">ログアウト</a> 50 </div> 51 52 <table> 53 <div id="calendar"></div> 54 </table> 55 56 <script type="text/javascript" src="itiran.short.js"></script> 57 </body> 58 </html>
試したこと
break;を入れてみる、内容のリセットやクリアなどで検索してみましたが、うまく該当しそうなものが引っかからず、何を変更すればいいのかもわかりません……。
補足情報(FW/ツールのバージョンなど)
何か不足している情報などございましたらご指摘いただけると助かります。
どうぞよろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/17 03:55