teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

現象が再現できるソースコードを更新いたしました。

2021/11/02 14:55

投稿

greencoop
greencoop

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  #実現したいこと
2
2
  2023/1までのカレンダーを表示したいのですが、2022/12と2023/1が表示しません。どなたかご教示いただければ幸いです。
3
3
  #発生している問題
4
- ![イメージ説明](022ea8c48ec96b0164a05381f28188f2.png)
4
+ ![イメージ説明](bfe68de67c84bb8e4a47c8adf0993cae.png)
5
5
  #コード
6
6
  ```
7
7
  //html

2

現象が再現できるソースコードを更新いたしました。

2021/11/02 14:55

投稿

greencoop
greencoop

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,80 +1,58 @@
1
- ### 前提・実現したいこと
1
+ #実現したいこと
2
+ 2023/1までのカレンダーを表示したいのですが、2022/12と2023/1が表示しません。どなたかご教示いただければ幸いです。
3
+ #発生している問題
4
+ ![イメージ説明](022ea8c48ec96b0164a05381f28188f2.png)
5
+ #コード
6
+ ```
7
+ //html
8
+ <!doctype html>
9
+ <html>
10
+ <head>
11
+ <title>sample</title>
12
+ <meta charset="utf-8" />
13
+ <link rel="stylesheet" type="text/css" href="css/cal.css">
14
+ </head>
15
+ <body>
16
+ <div id="cal21" class="cal_wrapper"> 10</div>
17
+ <div id="cal22" class="cal_wrapper"> 11</div>
18
+ <div id="cal23" class="cal_wrapper"> 12</div>
19
+ <div id="cal24" class="cal_wrapper"> 1</div>
20
+ <script type="text/javascript" charset="UTF-8" src="js/cal.js"></script>
21
+ </body>
22
+ </html>
2
23
 
3
- jsを使って2023年1月までのカレンダーを表示したいと考えているのですが、2022年12月と2023年1月がどうしても表示しません。
24
+ //css
25
+ div.cal_wrapper {
4
- どなたかご教示いただければ幸いです。
26
+ padding: 10px 0px;}
27
+ div.cal_wrapper table.cal tr td {
28
+ font-size: 10px; text-align: center; padding: 2px;}
29
+ div.cal_wrapper table.cal tr.headline {
5
- 宜しくお願いいたします。
30
+ background-color: #EEE;}
6
31
 
7
-
8
- ### 発生している問題・エラーメッセージ
9
- ![該当箇所のキャプチャ画像](508a1df12cc46b5a0441755f4c332622.png)
10
-
11
-
12
- ### 該当のソースコード
32
+ //js
13
-
14
- ```
15
- //html(2021年1月から2023年1月分)
33
+ // charset UTF-8
16
- <div style="width:90%; margin:60px auto 0px auto;">
17
- <!-- 料金表カレンダー -->
34
+ var calObj = new Array();
18
- <div id="cal0" class="cal_wrapper"> 21/1 Calendar Loading </div>
19
- <div id="cal1" class="cal_wrapper"> 21/2 Calendar Loading </div>
20
- <div id="cal2" class="cal_wrapper"> 21/3 Calendar Loading </div>
21
- <div id="cal3" class="cal_wrapper"> 21/4 Calendar Loading </div>
22
- <div id="cal4" class="cal_wrapper"> 21/5 Calendar Loading </div>
23
- <div id="cal5" class="cal_wrapper"> 21/6 Calendar Loading </div>
24
- <div id="cal6" class="cal_wrapper"> 21/7 Calendar Loading </div>
25
- <div id="cal7" class="cal_wrapper"> 21/8 Calendar Loading </div>
26
- <div id="cal8" class="cal_wrapper"> 21/9 Calendar Loading </div>
27
- <div id="cal9" class="cal_wrapper"> 21/10 Calendar Loading </div>
28
- <div id="cal10" class="cal_wrapper"> 21/11 Calendar Loading </div>
29
- <div id="cal11" class="cal_wrapper"> 21/12 Calendar Loading </div>
30
- <div id="cal12" class="cal_wrapper"> 22/1 Calendar Loading </div>
31
- <div id="cal13" class="cal_wrapper"> 22/2 Calendar Loading </div>
32
- <div id="cal14" class="cal_wrapper"> 22/3 Calendar Loading </div>
33
- <div id="cal15" class="cal_wrapper"> 22/4 Calendar Loading </div>
34
- <div id="cal16" class="cal_wrapper"> 22/5 Calendar Loading </div>
35
- <div id="cal17" class="cal_wrapper"> 22/6 Calendar Loading </div>
36
- <div id="cal18" class="cal_wrapper"> 22/7 Calendar Loading </div>
37
- <div id="cal19" class="cal_wrapper"> 22/8 Calendar Loading </div>
38
- <div id="cal20" class="cal_wrapper"> 22/9 Calendar Loading </div>
39
- <div id="cal21" class="cal_wrapper"> 22/10 Calendar Loading </div>
40
- <div id="cal22" class="cal_wrapper"> 22/11 Calendar Loading </div>
41
- <div id="cal23" class="cal_wrapper"> 22/12 Calendar Loading </div>
42
- <div id="cal24" class="cal_wrapper"> 23/1 Calendar Loading </div>
43
- </div>
35
+ //
44
-
45
- //js(2022年10月から2023年1月分の箇所)
46
- ~
47
- calObj[21] = new Object();
36
+ calObj[0] = new Object();
37
+ calObj[0].defaultMonth = 0;
38
+ calObj[0].daysClass = new Object();
39
+ calObj[0].xDaysLater = new Array();
40
+ calObj[0].xDays = new Array();
41
+ calObj[0].week = new Array();
42
+ calObj[0].month = new Object();
43
+ calObj[0].backward = '';
44
+ calObj[0].click = false;
45
+ calObj[0].priority = new Array('week','xDay','xDaysLater','day','backward');
46
+ //
48
47
  calObj[21] = cal_clone(calObj[0]);
49
48
  calObj[21].defaultMonth = 21;
50
-
51
- calObj[22] = new Object();
52
49
  calObj[22] = cal_clone(calObj[0]);
53
- calObj[22].defaultMonth = 22; /
50
+ calObj[22].defaultMonth = 22;
54
-
55
- calObj[23] = new Object();
56
51
  calObj[23] = cal_clone(calObj[0]);
57
52
  calObj[23].defaultMonth = 23;
58
-
59
- calObj[24] = new Object();
60
53
  calObj[24] = cal_clone(calObj[0]);
61
54
  calObj[24].defaultMonth = 24;
62
-
63
- ```
64
-
65
- ### 試したこと
66
-
67
- ・cssで装飾していますが試しにcss無しにしても結果(22年12月、23年1月が表示しない)は同じでした。
68
- ・cal25を追加すると2022年2月が表示されます。
69
-
70
- ### 補足情報(FW/ツールのバージョンなど)
71
-
72
- //配列の書き込みについて1
55
+ //
73
-
74
- var calObj = new Array();
75
-
76
- //配列の書き込みについて2
77
-
78
56
  calObj.calendars = new Array();
79
57
  calObj.days = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
80
58
  calObj.weekName = new Array("日","月","火","水","木","金","土");
@@ -84,4 +62,243 @@
84
62
  calObj.day = calObj.date.getDate();
85
63
  calObj.month = 1;
86
64
  calObj.year = calObj.date.getFullYear();
87
- calObj.currentList = null;
65
+ calObj.currentList = null;
66
+
67
+ function cal_init(){
68
+
69
+ var d = window.document;
70
+ var tagObj = d.getElementsByTagName("div");
71
+ var calToday = new Date();
72
+ for(var i=0;i<tagObj.length;i++){
73
+ if(tagObj[i].className == "cal_wrapper"){
74
+ var calId = Number(tagObj[i].id.substring(3,tagObj[i].id.length));
75
+ calObj.calendars.push(calId);
76
+ if(0 < (calObj.month + calObj[calId].defaultMonth) && (calObj.month + calObj[calId].defaultMonth) < 13)
77
+ calObj[calId].currentMonth = new Date((calObj.year)+"/"+(1 + calObj[calId].defaultMonth)+"/"+"1 00:00:00");
78
+ else
79
+ calObj[calId].currentMonth = new Date((calObj.year+1)+"/"+((calObj.month + calObj[calId].defaultMonth)%12)+"/"+"1 00:00:00");
80
+ cal_create(calId);
81
+ }
82
+ }
83
+ }
84
+ function cal_create(calId){
85
+ var d = window.document;
86
+ var day = calObj[calId].currentMonth.getDate();
87
+ var month = calObj[calId].currentMonth.getMonth() + 1;
88
+ var year = calObj[calId].currentMonth.getFullYear();
89
+ var week = calObj[calId].currentMonth.getDay();
90
+ var tdTextListArr = new Array();
91
+ var bisDay = 0;
92
+ var MonthDays = calObj.days[month];
93
+ var WeekCnt = new Array();
94
+ if(month == 2){
95
+ if(year % 100 == 0 || year % 4 != 0){
96
+ if(year % 400 != 0)
97
+ bisDay = 0;
98
+ else
99
+ bisDay = 1;
100
+ }
101
+ else if(year % 4 == 0)
102
+ bisDay = 1;
103
+ else
104
+ bisDay = 0;
105
+ }
106
+ MonthDays += bisDay;
107
+ var calHTML = "<table border='0' cellspacing='0' cellpadding='0' class='cal'>";
108
+ calHTML += "<tr><th colspan='7'>";
109
+
110
+ calHTML += "<p>" + year + "年" + calObj.monthName[month] + "</p></th></tr>";
111
+ calHTML += "<tr class='headline'>";
112
+ for(var i=0;i<calObj.weekName.length;i++)
113
+ calHTML += "<td>" + calObj.weekName[i] + "</td>";
114
+ calHTML += "</tr><tr>";
115
+ for(var i=0;i<week;i++)
116
+ calHTML += "<td>&nbsp;</td>";
117
+ for(dayCnt=1;dayCnt<=(calObj.days[month]+bisDay);dayCnt++){
118
+ var dayStr = year + "/" + month + "/" + dayCnt;
119
+ var dayStrN = month + "/" + dayCnt;
120
+ if(WeekCnt[week] == undefined)
121
+ WeekCnt[week] = 0;
122
+ WeekCnt[week]++;
123
+
124
+ var monStr = '' + month + '-' + week + '-' + WeekCnt[week];
125
+ var weekStr = '' + week + '-' + WeekCnt[week];
126
+ //alert(weekStr);
127
+
128
+ var dayClass = new Object();
129
+ var dayClassText = new Object();
130
+ var currentDayDate = new Date(year + "/" + month + "/" + dayCnt + " 00:00:00");
131
+ var laterDay = Math.floor((currentDayDate.getTime() - calObj.date.getTime()) / 1000 / (60 * 60 * 24));
132
+ var tdId = "td_"+calId+"_"+year+"_"+month+"_"+dayCnt;
133
+ // backward
134
+ if(calObj[calId].backward != null && currentDayDate.getTime() < calObj.date.getTime())
135
+ dayClass["backward"] = calObj[calId].backward;
136
+ // week
137
+ if(calObj[calId].month[weekStr] != undefined)
138
+ dayClass["week"] = calObj[calId].month[weekStr];
139
+ else if(calObj[calId].month[monStr] != undefined)
140
+ dayClass["week"] = calObj[calId].month[monStr];
141
+ else if(calObj[calId].week[week] != undefined){
142
+ if(typeof(calObj[calId].week[week]) == "object" && calObj[calId].week[week][WeekCnt[week]] != undefined){
143
+ dayClass["week"] = calObj[calId].week[week][WeekCnt[week]];
144
+ }
145
+ else if(calObj[calId].week[week] != undefined && typeof(calObj[calId].week[week]) != "object")
146
+ dayClass["week"] = calObj[calId].week[week];
147
+ }
148
+ // xDay
149
+ if(calObj[calId].xDays[dayCnt] != undefined)
150
+ dayClass["xDay"] = calObj[calId].xDays[dayCnt];
151
+ // xDaysLater
152
+ if(calObj[calId].xDaysLater[laterDay] != undefined)
153
+ dayClass["xDaysLater"] = calObj[calId].xDaysLater[laterDay];
154
+ // day
155
+ if(calObj[calId].daysClass[dayStr] != undefined)
156
+ dayClass["day"] = calObj[calId].daysClass[dayStr];
157
+ else if(calObj[calId].daysClass[dayStrN] != undefined)
158
+ dayClass["day"] = calObj[calId].daysClass[dayStrN];
159
+
160
+ var tdClassArr = new Array();
161
+ var tdTextArr = new Array();
162
+ var tdLinkArr = new Array();
163
+ var tdClassStr = "";
164
+ var tdTextStr = "";
165
+ var tdMouse = "";
166
+ var tdClassNames = new Object();
167
+ for(var ci=0;ci<calObj[calId].priority.length;ci++){
168
+ if(dayClass[calObj[calId].priority[ci]] != undefined){
169
+ var splitArr = new Array();
170
+ splitArr = dayClass[calObj[calId].priority[ci]].split(';');
171
+ tdClassArr.push(splitArr[0]);
172
+ tdClassNames[splitArr[0]] = true;
173
+ if(splitArr[1] != undefined){
174
+ tdTextArr.push(splitArr[1]);
175
+ var tdTextListLink = "";
176
+ if(splitArr[2] != undefined)
177
+ tdTextListLink = " onclick=\"cal_open(\'"+splitArr[2]+"\')\"";
178
+ tdTextListArr.push('<ol><li id="'+tdId+'_li" onmouseover="cal_list2day_over(this)" onmouseout="cal_list2day_out(this)" value="'+dayCnt+'"'+tdTextListLink+'>'+splitArr[1]+'</li></ol>');
179
+ }
180
+ if(splitArr[2] != undefined)
181
+ tdLinkArr.push(splitArr[2]);
182
+ }
183
+ }
184
+ if(tdTextArr.length > 0){
185
+ tdTextStr = "<span id='"+tdId+"'>";
186
+ for(var i=0;i<tdTextArr.length;i++){
187
+ tdTextStr += tdTextArr[i] + "<br />";
188
+ }
189
+ tdTextStr += "</span>";
190
+ tdMouse = " onmouseover=\"cal_disp_text(\'"+tdId+"\')\" onmouseout=\"cal_hide_text(\'"+tdId+"\')\"";
191
+ tdClassArr.push('pointer');
192
+ }
193
+ if(tdLinkArr.length > 0)
194
+ tdMouse += " onclick=\"cal_open(\'"+tdLinkArr[0]+"\')\"";
195
+ else if(calObj[calId].click){
196
+ var clickOpenURI = calObj[calId].clickURI;
197
+ clickOpenURI = clickOpenURI.replace(/_YEAR_/ig,year);
198
+ clickOpenURI = clickOpenURI.replace(/_MONTH_/ig,month);
199
+ clickOpenURI = clickOpenURI.replace(/_DAY_/ig,dayCnt);
200
+ if((calObj[calId].clickClassName != "" && tdClassNames[calObj[calId].clickClassName]) || calObj[calId].clickClassName == ""){
201
+ tdMouse += " onclick=\"cal_open(\'"+clickOpenURI+"\')\"";
202
+ tdClassArr.push('pointer');
203
+ }
204
+ }
205
+ if(tdClassArr.length > 0)
206
+ tdClassStr = " class='" + tdClassArr.join(' ') + "'";
207
+ calHTML += "<td id='"+tdId+"_td'><div"+tdClassStr+tdMouse+">" + dayCnt + tdTextStr + "</div></td>";
208
+ if(week == 6){
209
+ calHTML += "</tr>";
210
+ if(dayCnt < calObj.days[month])
211
+ calHTML += "<tr>";
212
+ week = 0;
213
+ }
214
+ else
215
+ week++;
216
+ }
217
+ while(week <= 6 && week != 0){
218
+ calHTML += "<td>&nbsp;</td>";
219
+ if(week == 6)
220
+ calHTML += "</tr>";
221
+ week++;
222
+ }
223
+ calHTML += "</table>";
224
+ d.getElementById('cal'+calId).innerHTML = calHTML;
225
+ // list
226
+ if(d.getElementById('schedule'+calId)){
227
+ d.getElementById('schedule'+calId).innerHTML = "";
228
+ if(tdTextListArr.length > 0 && d.getElementById('schedule'+calId)){
229
+ d.getElementById('schedule'+calId).innerHTML = tdTextListArr.join('');
230
+ }
231
+ }
232
+ // /list
233
+ }
234
+ function cal_list2day_over(obj){
235
+ var d = window.document;
236
+ var dayId = obj.id.substring(0,obj.id.indexOf('_li'));
237
+ if(d.getElementById(calObj.currentList))
238
+ d.getElementById(calObj.currentList).style.backgroundColor = '#FFF';
239
+ calObj.currentList = dayId+'_td';
240
+ if(d.getElementById(dayId+'_td'))
241
+ d.getElementById(dayId+'_td').style.backgroundColor = '#CCC';
242
+ }
243
+ function cal_list2day_out(obj){
244
+ var d = window.document;
245
+ var dayId = obj.id.substring(0,obj.id.indexOf('_li'));
246
+ if(d.getElementById(calObj.currentList))
247
+ d.getElementById(calObj.currentList).style.backgroundColor = '#FFF';
248
+ }
249
+ function cal_open(uri){
250
+ window.open(uri);
251
+ }
252
+ function cal_disp_text(textId){
253
+ var d = window.document;
254
+ if(navigator.userAgent.indexOf('MSIE') == -1)
255
+ d.getElementById(textId).style.display = "block";
256
+ }
257
+ function cal_hide_text(textId){
258
+ var d = window.document;
259
+ d.getElementById(textId).style.display = "none";
260
+ }
261
+
262
+ function cal_move(calId,m){
263
+ if(m == null)
264
+ calObj[calId].currentMonth = new Date(calObj.year+"/"+(calObj.month)+"/"+"1 00:00:00");
265
+ else {
266
+ var day = calObj[calId].currentMonth.getDate();
267
+ var month = calObj[calId].currentMonth.getMonth() + 1;
268
+ var year = calObj[calId].currentMonth.getFullYear();
269
+ if(0 < month + m && month + m < 13)
270
+ calObj[calId].currentMonth = new Date(year+"/"+(month + m)+"/"+"1 00:00:00");
271
+ else if((month + m) < 1){
272
+ year--;
273
+ month = 12;
274
+ calObj[calId].currentMonth = new Date(year+"/"+(month)+"/"+"1 00:00:00");
275
+ }
276
+ else {
277
+ year++;
278
+ month = 1;
279
+ calObj[calId].currentMonth = new Date(year+"/"+(month)+"/"+"1 00:00:00");
280
+ }
281
+ }
282
+ cal_create(calId);
283
+ }
284
+ function cal_clone(obj) {
285
+ var dest;
286
+ if(typeof obj == 'object'){
287
+ if(obj instanceof Array){
288
+ dest = new Array();
289
+ for(i=0;i<obj.length;i++)
290
+ dest[i] = cal_clone(obj[i]);
291
+ }
292
+ else {
293
+ dest = new Object();
294
+ for(prop in obj)
295
+ dest[prop] = cal_clone(obj[prop]);
296
+ }
297
+ }
298
+ else
299
+ dest = obj;
300
+ return dest;
301
+ }
302
+ function cal_getMonth(){
303
+ }
304
+ cal_init();

1

該当箇所のキャプチャ画像がうまく表示できていなかったのでアップロードしなおしました。

2021/11/02 14:53

投稿

greencoop
greencoop

スコア1

title CHANGED
File without changes
body CHANGED
@@ -6,10 +6,8 @@
6
6
 
7
7
 
8
8
  ### 発生している問題・エラーメッセージ
9
+ ![該当箇所のキャプチャ画像](508a1df12cc46b5a0441755f4c332622.png)
9
10
 
10
- ```
11
- ![現在作成中のカレンダーです。](e43f8e1bf309527c2d4ccfc96014e882.png)
12
- ```
13
11
 
14
12
  ### 該当のソースコード
15
13