こんにちは。
Webページ内に月繰りカレンダーを表示させ、その中の日付欄にそれぞれAjaxリクエストによって外部APIから取得した値を表示させようとしています。
リクエストの結果、各々の日付に対して1つ、A, B, C のいずれかが返ってきます。
ここでデフォルトでの表示月を「Aが存在する直近の月」にしたいのですがうまいやり方がわかりません。。
「月ごとのリクエストを送り、Aが存在する月を見つけたらそこをデフォルトの表示月にする」という考え方で可能かと思うものの、具体的な方法が思いつかない次第です。
あるいはもっと良いやり方がありますでしょうか?
下記の要領で、現在の年月をデフォルト月として表示することには成功しています。
コード中”min”の部分を current_ym でなく”Aが存在する直近の年月”にできれば良いかと思っております。
lang
1var current_ym = new Date((new Date).getFullYear(), (new Date).getMonth(), 1); 2var min = dateFormat(current_ym, 'api'); 3var max = dateFormat(new Date(current_ym.getFullYear(), current_ym.getMonth() + 1, 1), 'api'); 4var query = 'date_min=' + min + '&date_max=' + max; 5$.ajax({ 6 url: api_url + '?' + query, 7 dataType: 'json', 8 success: function(result_json) { 9 date_html(result_json); //結果用html 10 }, 11 error: function() { 12 } 13}); 14 15function dateFormat(date, type) { 16 var year = date.getFullYear(); 17 var month = date.getMonth() + 1; 18 var day = date.getDate(); 19 var hour = date.getHours(); 20 var min = date.getMinutes(); 21 month = ('0' + month).slice(-2); 22 day = ('0' + day).slice(-2); 23 hour = ('0' + hour).slice(-2); 24 min = ('0' + min).slice(-2); 25 var result = ''; 26 if (type == 'api') { 27 // api 用のフォーマット 28 result = year + month + day + '0000'; 29 } else { 30 // 表示用のフォーマット 31 result = year + delimiter + month; 32 } 33 return result; 34}
api_url?date_min=min&date_max=maxにおいて、
minからmaxの間の日付でリクエストを送ることが可能となっています。
アドバイスのほどよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/05 03:46
2015/07/05 04:22 編集
2015/07/06 01:08