質問編集履歴

4

質問文修正

2016/08/31 05:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,12 +8,6 @@
8
8
 
9
9
  複数選択のサンプルを拡張して、祝日の表示を試みているのですが、
10
10
 
11
- ”beforeShowDay”パラメータを入れたところでjQuery-ui.js内でエラーが起きてしまいます。
12
-
13
- 何となく、変数のスコープがおかしいような気がしていますが、デバッグで原因が掴めずいます。
14
-
15
-
16
-
17
11
  どなたかよい実装方法をご教授願えませんでしょうか。
18
12
 
19
13
  ```

3

ソース修正、問題点追記

2016/08/31 05:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -64,34 +64,50 @@
64
64
 
65
65
  var selected_date = []; // 選択した年月日
66
66
 
67
- var days;
67
+ var holidays;
68
68
 
69
69
  $(function(){
70
70
 
71
+ GCalHolidays.get(show, undefined, undefined);
72
+
73
+
74
+
75
+ });
76
+
77
+ function show(holidays) {
78
+
79
+ datepick(holidays);
80
+
81
+ }
82
+
83
+ function datepick(holidays){
84
+
71
85
  var months = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
72
86
 
73
87
  $('#datepicker').datepicker({
74
88
 
75
89
  beforeShowDay: function(date){
76
90
 
77
- GCalHolidays.get(show, undefined, undefined);
91
+
78
-
79
- function show(days) {return;}
92
+
80
-
81
- for ( j in days) {
93
+ for ( j in holidays) {
82
-
94
+
83
- if(date.getYear == j.year && date.getMonth == j.month && date.getDate==j.day){
95
+ if(date.getFullYear == holidays[j].year && date.getMonth == holidays[j].month && date.getDate==holidays[j].date){
96
+
97
+
84
98
 
85
99
  return [false, '', ''];
86
100
 
87
101
  }else{
88
102
 
89
- return [true, '', ''];
103
+
90
104
 
91
105
  }
92
106
 
93
107
  }
94
108
 
109
+ return [true, '', ''];
110
+
95
111
  },
96
112
 
97
113
  prevText: '前月',
@@ -234,7 +250,7 @@
234
250
 
235
251
  }
236
252
 
237
- });
253
+ }
238
254
 
239
255
  </script>
240
256
 
@@ -254,20 +270,14 @@
254
270
 
255
271
  ```
256
272
 
257
- エラーメッセージ(デベロッパーツール)
258
-
259
- ```
260
-
261
- jquery-ui.min.js:8 Uncaught TypeError: Cannot read property '0' of undefined
262
-
263
- ```
264
-
265
273
 
266
274
 
267
275
  追記:
268
276
 
269
- デバッグした結果
277
+ カレンダー表示するところまでは戻した”beforeShowDay:”を追加したことによって土日の色まで灰色に戻ってしまいました。
270
-
278
+
271
- GCalHolidays.get(show, undefined, undefined);
279
+ <div id="datepicker">をinputタグに変えると祝日は表示されますが複数選択の
272
-
280
+
273
- がうまく実行ていないようでコールバック関のshow()もちん動作していないようです。
281
+ 表示(裏配列には入っています)が死にdivタグだと複選択は生ますが祝日表示が死ぬいうジレンマに陥っていす。
282
+
283
+ http://g.0-oo.net/gcalendar-holidays.jsの中身をdivタグでも動くように書き換えた方がいいのか、方針から決め直さないといけないようです…。

2

追記

2016/08/31 05:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -68,21 +68,17 @@
68
68
 
69
69
  $(function(){
70
70
 
71
- GCalHolidays.get(show, undefined, undefined);
72
-
73
- function show(days) {
74
-
75
- days=this.days;
76
-
77
- }
78
-
79
71
  var months = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
80
72
 
81
73
  $('#datepicker').datepicker({
82
74
 
83
75
  beforeShowDay: function(date){
84
76
 
77
+ GCalHolidays.get(show, undefined, undefined);
78
+
79
+ function show(days) {return;}
80
+
85
- for ( j in days) {
81
+ for ( j in days) {
86
82
 
87
83
  if(date.getYear == j.year && date.getMonth == j.month && date.getDate==j.day){
88
84
 
@@ -94,20 +90,6 @@
94
90
 
95
91
  }
96
92
 
97
-
98
-
99
- // $('.ui-datepicker-calendar a').each(function(){
100
-
101
- // var $this = $(this);
102
-
103
- // if ( $this.text() == j.day ) {
104
-
105
- // $this.parent('td').css('background-color','#F00');
106
-
107
- // }
108
-
109
- // });
110
-
111
93
  }
112
94
 
113
95
  },
@@ -279,3 +261,13 @@
279
261
  jquery-ui.min.js:8 Uncaught TypeError: Cannot read property '0' of undefined
280
262
 
281
263
  ```
264
+
265
+
266
+
267
+ 追記:
268
+
269
+ デバッグを繰り返した結果、
270
+
271
+ GCalHolidays.get(show, undefined, undefined);
272
+
273
+ がうまく実行できていないようで、コールバック関数のshow()もきちんと動作していないようです。

1

エラーメッセージの追記。

2016/08/30 08:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -271,3 +271,11 @@
271
271
  </html>
272
272
 
273
273
  ```
274
+
275
+ エラーメッセージ(デベロッパーツール)
276
+
277
+ ```
278
+
279
+ jquery-ui.min.js:8 Uncaught TypeError: Cannot read property '0' of undefined
280
+
281
+ ```