以下のようなカレンダーがあります。
ヘッダ部分に「年と月とクリックボタン」があり、
今月と来月が表示できます。
今月のヘッダ例「2021年11月▶」
来月のヘッダ例「◀2021年12月」
来月(2022年1月)を表示しようと矢印をクリックしたところ、
以下のように、ヘッダ部分が表示されない不具合を見つけました。
今までは、2021年だったせいか、
問題ありませんでした。
改善方法が分からなく、
どうずれば、年度をまたいでもヘッダ部分が表示できるのか、
アドバイス頂ければ幸いです。
よろしくお願い致します。
javascript
1//カレンダー 2var nowDate; 3var year; 4var month; 5$(function(){ 6nowDate = new Date(); 7year = nowDate.getFullYear(); // 年 8month = nowDate.getMonth() + 1; // 月 9MakeCalendar(); 10}); 11function prev(){ 12if(month === 1){ 13month = 12; 14year--; 15}else{ 16month--; 17} 18MakeCalendar(); 19} 20function next(){ 21if(month === 12){ 22month = 1; 23year++; 24}else{ 25month++; 26} 27MakeCalendar(); 28} 29function MakeCalendar(){ 30$.ajax({ 31url: 'calendar.php?y='+year+'&m='+month, 32dataType: 'json', 33timeout: 10000, 34success: function(json) { 35var c = '<div class="cal"><div class="cal_header">'; 36if(nowDate.getFullYear() <= year && (nowDate.getMonth() + 1) < month ){ 37c += '<a href="" onClick="prev();return false;" class="cal_prev"></a>'; 38c += '<p>'+year+'年'+month+'月</p>'; 39}else{} 40if(nowDate.getFullYear() >= year && (nowDate.getMonth() + 2) > month ){ 41c += '<p>'+year+'年'+month+'月</p>'; 42c += '<a href="" onClick="next();return false;" class="cal_next"></a>' 43}else{} 44c += '</div>'; 45c += '<div class="cal_body">'; 46c += '<table class="table_cal">'; 47c += '<thead><tr><th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th></tr></thead>'; 48jQuery.each(json, function(i, date) { 49if(date.week === '0'){ 50c += '<tr>'; 51}else{} 52if(date.holiday === true){ 53c += '<td class="closed">'+date.day+'</td>'; 54}else{ 55c += '<td>'+date.day+'</td>'; 56} 57if(date.week === '6'){ 58c += '</tr>'; 59}else{} 60}); 61c += '</tbody></table></div></div>'; 62$('#calendar').html(c); 63}, 64error: function(xhr, textStatus, error) { 65alert('ERR'); 66} 67}); 68}
以下の年を跨ぐことを考慮したコードを追加して解決できました。
ありがとうございました。
javascript
1if(nowDate.getFullYear() < year ){ 2c += '<a href="" onClick="prev();return false;" class="cal_prev"></a>'; 3c += '<p>'+year+'年'+month+'月</p>'; 4}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/12/01 04:59