• 締切済み

日付範囲指定について

よろしくお願いします。 年、月をコンボボックスで表示させ、選択できるようにしてあります。jsの内容は以下です。 ----------------------------------------------------- var ymin = 1950; var ymax = 2050; function getToday(){ var t = new Date(); var y = t.getYear(); if(1900 > y){y += 1900;} var m = t.getMonth()+1; var d = t.getDate(); fyear(y); fmonth(m); fday(d); } function fyear(thisyear){ var obj = document.getElementById('year'); ymin =ymin - 0; ymax =ymax - 0; var j = 1; for(i = ymin; ymax > i; i++){ var str = i.toString() + "年"; obj.options[j] = new Option(str); obj.options[j].value = i; if(i == thisyear){ obj.options[j].selected = true; } j++; } } function fmonth(thismonth){ var obj = document.getElementById('month'); for(i = 1; 12 >= i; i++){ var str = i.toString() + "月"; obj.options[i] = new Option(str); obj.options[i].value = i; if(i == thismonth){ obj.options[i].selected = true; } } } ----------------------------------------------------- これを利用して日付範囲指定(例として、2006年1月~2008年8月ような感じ)を行いたいのですが、可能でしょうか? 自分で試した方法ですと、前半(2006年1月)は表示できるのですが、後半(2008年8月)が表示できませんでした。 試したソースは以下 --------------------------------------------------- <!-- var ymin = 1950; var ymax = 2050; function getToday(){ var t = new Date(); var y = t.getYear(); if(1900 > y){y += 1900;} var m = t.getMonth()+1; var d = t.getDate(); fyear(y); fmonth(m); tyear(y); tmonth(m); } function fyear(thisyear){ var obj = document.getElementById('year'); ymin =ymin - 0; ymax =ymax - 0; var j = 1; for(i = ymin; ymax > i; i++){ var str = i.toString() + "年"; obj.options[j] = new Option(str); obj.options[j].value = i; if(i == thisyear){ obj.options[j].selected = true; } j++; } } function fmonth(thismonth){ var obj = document.getElementById('month'); for(i = 1; 12 >= i; i++){ var str = i.toString() + "月"; obj.options[i] = new Option(str); obj.options[i].value = i; if(i == thismonth){ obj.options[i].selected = true; } } } function tyear(thisyear){ var obj = document.getElementById('tyear'); ymin =ymin - 0; ymax =ymax - 0; var j = 1; for(i = ymin; ymax > i; i++){ var str = i.toString() + "年"; obj.options[j] = new Option(str); obj.options[j].value = i; if(i == thisyear){ obj.options[j].selected = true; } j++; } } function tmonth(thismonth){ var obj = document.getElementById('tmonth'); for(i = 1; 12 >= i; i++){ var str = i.toString() + "月"; obj.options[i] = new Option(str); obj.options[i].value = i; if(i == thismonth){ obj.options[i].selected = true; } } } //--> どうかよろしくお願いします。

みんなの回答

noname#84373
noname#84373
回答No.1

<html> <body> <script> var sdate=[2000,9];//開始日 //var edate=[2008,11];//終了日を指定するなら var edate=[(new Date()).getFullYear(),(new Date()).getMonth()+1];//開始日から今日までなら window.onload=function(){setoption('yy',sdate[0],edate[0]);makem(document.getElementById('yy').value);} function setoption(id,s,e){ var o=document.getElementById(id); while(o.hasChildNodes()) o.removeChild(o.lastChild); for(i=s;i<=e;i++){ n=document.createElement('option'); n.value=i; n.innerHTML=i; n.selected=(id=='yy'&&(new Date()).getFullYear()==i||id=='mm'&&((new Date()).getMonth()+1)==i)?true:false; o.appendChild(n); } } function makem(v){ s=(v==sdate[0])?sdate[1]:1; e=(v==edate[0])?edate[1]:12; setoption('mm',s,e); } </script> <form> <select id="yy" style="width:4em" onChange="makem(this.value)"> </select>年 <select id="mm" style="width:4em"> </select>月 </form> </body> </html>

hajimete-san
質問者

補足

pipi_さん、書き込みありがとうございます。 返答遅れてすみません。 自分の説明不足だったかもしれませんが、範囲指定を行いたいので 上記のは参考にさせていただきます。 しかしながら書き込みしていただいてありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A