2017-02-13 4 views
-1

カレンダーを作成しようとしていますが、2つの問題があります。Javascriptでカレンダーを作成する(Html)

  1. 月はテキストとして表示されるのではなく、数字として表示されます。
  2. 月を変更すると日数も更新されません。月の日数は異なるため、選択日の日数は月選択の選択に基づいて更新する必要があります。
  3. enter image description here

    日/月/年の形式

。ここで

はhtmlコードです:ここで

<form> 
    <select id="day" name="day"> 
    </select> 

    <select id ="month" onchange = "changeDays(this)" name="month" > 
    </select> 

    <select id="year" name="year"> 
    </select> 
</form> 
</div> 

はJavascriptコードです:

setCalendar('day',1, 31, false); 
setCalendar('month',1, 12, false); 
setCalendar('year',1910, 2017, false); 

function setCalendar(id, min, max, logic){ 

if(logic){ 
removeOptions(id); 
} 

var monthsarray = ["January", "February","March" ,"April" ,"May" ,"June" ,"July" ,"August" ,"September", "October", "November" , "December"]; 

for (i = min; i <= max; i++){ 
select = document.getElementById(id); 
var opti = document.createElement("option"); 
opti.value = i; 
opti.text = id === "day" || "year" ? i.toString() : monthsarray[i-1]; 
select.add(opti); 
} 

} 


function changeDays(SelectObject){ 

switch(SelectObject){ 
case 1: 
//January 
setCalendar('day',1,31,true); 
break; 
case 2: 
//February 
setCalendar('day',1,28,true); 
break; 
case 3: 
//March 
setCalendar('day',1,31,true); 
break; 
case 4: 
//April 
setCalendar('day',1,30,true); 
break; 
case 5: 
//May 
setCalendar('day',1,31,true); 
break; 
case 6: 
//June 
setCalendar('day',1,30,true); 
break; 
case 7: 
//July 
setCalendar('day',1,31,true); 
break; 
case 8: 
//August 
setCalendar('day',1,31,true); 
break; 
case 9: 
//September 
setCalendar('day',1,30,true); 
break; 
case 10: 
//October 
setCalendar('day',1,31,true); 
break; 
case 11: 
//November 
setCalendar('day',1,30,true); 
break; 
case 12: 
//December 
setCalendar('day',1,31,true); 
break; 
} 

} 

function removeOptions(selectObject) 
{ 
    var i; 
    for(i = selectObject.options.length - 1 ; i >= 0 ; i--) 
    { 
     selectObject.remove(i); 
    } 
} 
+1

'ID ==="この操作を行います日 "|| "年"は間違っています: 'id ===" day "|| id === "year" ' – Pointy

+4

そのジョブに既に存在するプラグインの1つを使いたくないですか? – Dinei

+0

'this'をその関数の引数として渡す必要はありません。既にアクセス可能である必要があります。 –

答えて

1
opti.text = id === "day" || "year" ? i.toString() : monthsarray[i-1]; 

年truthyので、monthsarrayは値として採用されることはありません。

opti.text = id === "day" || id==="year" ? i.toString() : monthsarray[i-1]; 

また、あなたはあなたは、その値に切り替えたい

switch(SelectObject){ 

をたくない:

switch(SelectObject.options[SelectObject.selectedIndex].value){ 

間違い3

select.add(opi) => select.appendChild(opi) 
+0

ありがとうございます。テキストとして表示されない月についての問題は修正されました。SelectObjectをSelectObject.valueに変更しても、他の問題は修正されませんでした。 – David

+0

@David http://stackoverflow.com/questions/1085801/get-selected-value-in-dropdown-list-using-javascript –

+0

私はSelectObject.selected [SelectObject.selectedIndex] .valueとSelectObject.options [ SelectObject.selectedIndex] .value。何らかの理由でまだ動作していませんが、スイッチのケースが原因ですか?私はselect.add(opi)からselect.appenChild(opi)に変更しました。 – David

関連する問題