달의 판결에는 너무 많은 판단 조건이 포함되며, 그렇지 않으면 성과가 크게 줄어 듭니다. 스위치 구문을 사용하는 것이 좋습니다
코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
GetDays : 기능 (연도, 월) {
// var aday = [31,28 | 29,31,30,31,31,31,31,31,30,30,31];
// 2 월의 날 데이터 처리
var Feddays = Year%4 == 0? 29 : 28,
returnDays = '';
var month = month <10? month = '0'+Month : Month.toString ();
스위치 (월) {
케이스 '01':
케이스 '03':
케이스 '05':
케이스 '07':
케이스 '08':
사례 '10':
사례 '12': returndays = 31; break;
케이스 '04':
케이스 '06':
케이스 '09':
사례 '11': returndays = 30; break;
사례 '02': returndays = Feddays; Break;
}
반품은 반품입니다.
}
완전한 출처 코드 :
코드 사본은 다음과 같습니다.
/* 저자 : Laoguoyong
---------------------------------
날짜의 3 단계 연결, 범위 선택
---------------------------------
매개 변수
* [문자열] 대상 : '#year,#month,#day'; 연도, 월, 일의 ID
* [문자열] 범위 : '2013-02-03,2019-09-21'; 범위, 올바른 형식은 xxxx-xx-xx입니다
--- 코드를 저장하려면 올바른 날짜 범위 매개 변수를 전달하십시오.
---- 오류 데모 :
(1) 범위 : '2013-02-03,2019-9-21'이 잘못되었습니다. 날짜 형식에주의하십시오.
(2) 범위 : '2013-02-03'이 잘못되었습니다. 전체 범위 값을 입력하십시오.
(3) 범위 : '2013-02-03,2016-02-30'잘못되었습니다. 2 월에는 30 일이 없습니다.
(3) 범위 : '2013-02-03,2011-02-30'이 잘못되었고 범위가 잘못되었습니다
*
*/
함수 gysetdate (opt) {
// Elem
var targets = opt.targets.split ( ',');
this.eyear = this.getId (대상 [0] .Slice (1));
this.emonth = this.getId (대상 [1] .slice (1));
this.eday = this.getId (대상 [2] .Slice (1));
if (! this.eyear ||! this.emonth ||! this.eday) 반환;
// 범위 값
var r = opt.range.indexof ( ','),
astarts = opt.range.slice (0, r) .split ( '-'), // 변환 : [ '2013', '05', '20']
aends = opt.range.slice (r+1, opt.range.length) .split ( '-'); // 변환 : [ '2018', '08', '20']]
// 숫자 유형
this.startyear = parseint (astarts [0], 10);
this.startmonth = parseint (astarts [1], 10);
this.startday = parseint (astarts [2], 10);
this.endyear = parseint (Aends [0], 10);
this.endmonth = parseint (Aends [1], 10);
this.endday = parseint (Aends [2], 10);
this.init ();
}
gysetdate.prototype = {
init : function () {
var _that = this;
// 초기화 날짜
this.setyears ({ 'start': this.startyear, 'end': this.endyear});
this.setmonths ({ 'start': this.startmonth});
this.setdays ({ 'year': this.startyear, 'month': this.startmonth, 'start': this.startday});
// 연도 선택
this.eyear.onchange = function () {
var year = parseint (this.value);
스위치 (true) {
CASE (Year == _that.startyear) : {
_that.setmonths ({ 'start': _ that.startmonth});
_that.setDays ({ 'year': _ that.startyear, 'month': _ th that.startmonth, 'start': _ th that.startday});
};부서지다;
CASE (Year == _that.endyear) : {
_that.setmonths ({ 'start': 1, 'end': _ that.endmonth});
if (_that.endmonth> 1) {
_that.setDays ({ 'year': _ that.endyear, 'month': 1, 'start': 1});
}또 다른{
_that.setDays ({ 'year': _ th that.endyear, 'month': 1, 'start': 1, 'end': _ th that.endday});
}
};부서지다;
기본:{
_that.setmonths ({ 'start': 1});
_that.setDays ({ 'start': 1, 'year': 연도, '달': 1});
}
}
}
// 월별 선택
this.emonth.onchange = function () {
var year = parseint (_that.eyear.options [_that.eyear.selectedIndex] .Value),
Month = parseint (this.value);
스위치 (true) {
CASE (Year == _ that.endyear && month == _ that.endmonth) : {
_that.setDays ({ 'start': 1, 'year': 연도, '달': 월, 'end': _ th that.endday});
};부서지다;
CASE (Year == _ that.startyear && month == _ that.startmonth) : {
_that.setDays ({ 'year': _ that.startyear, 'month': _ th that.startmonth, 'start': _ th that.startday});
};부서지다;
기본:{
_that.setDays ({ 'start': 1, 'year': 연도, '월': Month});
}
}
}
},
/*연도, 월, 일을 설정합니다
------------------------------------
모든 매개 변수 값은 숫자 유형입니다
*/
// 매개 변수 { 'start': xx, 'end': xxx}
setyears : function (opt) {
this.eyear.innerhtml = '';
for (var n = opt.start; n <= opt.end; n ++) {
this.eyear.add (새 옵션 (n, n));
}
},
// 매개 변수 { 'start': xx, 'end': xxx}
// 매개 변수 'end'는 선택 사항이며 무시하고 12 월까지 시작됩니다.
setMonths : function (opt) {
this.emonth.innerhtml = '';
var month = opt.end || 12;
for (var n = opt.start; n <= monst; n ++) {
if (n <10) n = '0'+n;
this.emonth.add (새 옵션 (n, n));
}
},
// 매개 변수 { 'start': xx, 'year': xxx, 'month': xx, 'star': xx, 'end': xxx}
// 매개 변수 'end'는 선택 사항이며 무시하며 이달 말까지 시작됩니다 (월에 따라 판단)
setDays : function (opt) {
this.eday.innerhtml = '';
var days = opt.end || this.getDays (opt.year, opt.month);
for (var n = opt.start; n <= days; n ++) {
if (n <10) n = '0'+n;
this.eday.add (새 옵션 (n, n));
}
},
/* 연도와 월에 따르면 2016-2와 같은 올바른 일 수를 반환하면 수익률은 29 일 (실행)입니다.
---------------------------------------------------------------------
모든 매개 변수 값은 숫자 유형입니다
*/
GetDays : 기능 (연도, 월) {
// var aday = [31,28 | 29,31,30,31,31,31,31,31,30,30,31];
// 2 월의 날 데이터 처리
var Feddays = Year%4 == 0? 29 : 28,
returnDays = '';
var month = month <10? month = '0'+Month : Month.toString ();
스위치 (월) {
케이스 '01':
케이스 '03':
케이스 '05':
케이스 '07':
케이스 '08':
사례 '10':
사례 '12': returndays = 31; break;
케이스 '04':
케이스 '06':
케이스 '09':
사례 '11': returndays = 30; break;
사례 '02': returndays = Feddays; Break;
}
반품은 반품입니다.
},
/* 도구 도우미 기능
------------------------------------
*/
getid : function (id) {
return document.getElementById (id);
}
}
효과 디스플레이 사진 :
효과는 꽤 좋습니다. 친구들, 직접 아름답게하고 자신의 프로젝트에서 사용하십시오.