티스토리 뷰
프로그래밍 하다보면 라디오던 체크박스던 여러건 해야할 일이 있다.
이럴때 예전에는 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);
'자바스크립트()' 카테고리의 다른 글
swiper 여러개 중복으로 쓰는 방법 (0) | 2023.09.13 |
---|---|
전송구간 암호화 자바스크립트 AES 암호화 함수 CryptoJS.AES.encrypt (0) | 2023.08.23 |
자바스크립트 " " replaceAll 변환 (0) | 2020.06.02 |
자바스크립트 오늘날짜보다 작은날짜 체크하기 (0) | 2017.06.30 |
- Total
- Today
- Yesterday
- Python
- XE3
- JDBC
- 프로씨
- 자바 smtp
- proc
- esql
- MySQL
- 플러터
- C
- ocajp
- 포인터
- EC
- 파싱
- 파이썬
- 자바
- KG
- php
- XE
- xe addon
- 이클립스
- 스크래핑
- C언어
- ocjap
- 인포믹스
- 오라클
- 라이믹스 모듈
- 문자열
- xe애드온
- webix
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |