티스토리 뷰

프로그래밍 하다보면 라디오던 체크박스던 여러건 해야할 일이 있다.


이럴때 예전에는 0,1,2,3 ... 이런식으로 하드코딩해서 했는데 영 무식하고 수정등이 어렵다..


그래서 변수를 이용하면 될려나... 생각하다가 해보니까 되었다.


역시 코딩은 머리보다 손가락인것 같다. 긴가민가할때 그냥 쳐보고 확인해 보면 된다..


<%

for(int i=0; i<5; i++){

%>


<input type="text" id="endYmd<%=i%>" name="endYmd<%=i%>">


<input type="radio" name="rdoDate<%=i%>" value="0" onclick="javascript:clickDate(<%=i%>,0)" />

<label>당일</label>


<input type="radio" name="rdoDate<%=i%>" value="1" onclick="javascript:clickDate(<%=i%>,1)" />

<label>1일</label>


<input type="radio" name="rdoDate<%=i%>" value="5" onclick="javascript:clickDate(<%=i%>,5)" />

<label>5일</label>


<input type="radio" name="rdoDate<%=i%>" value="30" onclick="javascript:clickDate(<%=i%>,30)" />

<label>30일</label>


<input type="radio" name="rdoDate<%=i%>" value="90" onclick="javascript:clickDate(<%=i%>,90)" />

<label>90일</label>


<%

}

%>




function clickDate(i,v){


var date=new Date();


if(v==0){}


else if(v=="1"){ myDate.setDate(myDate.getDate() + 1); }

else if(v=="5"){ myDate.setDate(myDate.getDate() + 5); }


else if(v=="30"){ myDate.setDate(myDate.getMonth() + 1);}


else if(v=="90"){ myDate.setDate(myDate.getMonth() + 3);}

  

  //잘못된 코드 아래에 설명이 있음.

var year=date.getFullYear();


var month=date.getMonth()+1; //0부터 시작하므로 1더함


var day=date.getDate();




if((""+month).length==1){month="0"+month;}


if((""+day).length==1){day="0"+day;}




var d2=year+"-"+month+"-"+day;


$("#endYmd"+i).val(d2);


}

=====================================================

저렇게 쓰면 맞는지 알았는데 중대한 오류가 있었다. 눈치 챘나요? 바로 날짜 계산시 값을 가져오기 전에 계산을 먼저 다 해야 한다는 것이다.


else if(v=="1"){ myDate.setDate(myDate.getDate() + 1); }

else if(v=="5"){ myDate.setDate(myDate.getDate() + 5); }


//월은 0 부터 시작하기 때문에 더하고 싶은 월+1을 해줘야 한다.

else if(v=="30"){ myDate.setDate(myDate.getMonth() + 2);}


else if(v=="90"){ myDate.setDate(myDate.getMonth() + 4);}


//년도를 가져오기 전에 이미 다 계산을 해야 한다.  

var year=date.getFullYear();


// 여기가 잘못됐음.

//var month=date.getMonth()+1; //0부터 시작하므로 1더함

//계산은 년도 가져오기 전에 이미 다해야 한다. 년도가 바뀔때 문제가 됨.

var month=date.getMonth();


var day=date.getDate();


======================================================


바로 위에게 맞는줄 알았는데 바로 위에처럼 하면 월초에 달이 현재달이 아닌 현상이 발생했다.


그래서 결론은..


var date=new Date();


if(v==0){}


else if(v=="1"){ date.setDate(date.getDate() + 1); }

else if(v=="5"){ date.setDate(date.getDate() + 5); }


else if(v=="30"){ date.setDate(date.getMonth() + 1);}


else if(v=="90"){ date.setDate(date.getMonth() + 3);}

  

  //잘못된 코드 아래에 설명이 있음.

var year=date.getFullYear();


var month=date.getMonth()+1; //0부터 시작하므로 1더함


var day=date.getDate();




if((""+month).length==1){month="0"+month;}


if((""+day).length==1){day="0"+day;}




var d2=year+"-"+month+"-"+day;


$("#endYmd"+i).val(d2);




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함