jQuery 인증 코드 60초 카운트다운 실현

1825 단어 전단 학습
jQuery 인증 코드 60초 카운트다운 실현 ###
lib에서.dom.d.ts에는 setInterval 및 setTimeout 타이머 선언이 있습니다.
declare function setInterval(handler: (...args: any[]) => void, timeout: number): number;
declare function setInterval(handler: any, timeout?: any, ...args: any[]): number;
declare function setTimeout(handler: (...args: any[]) => void, timeout: number): number;
declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number;

타이머의 차이점은 다음과 같다. setInterval은 지정한 시간을 주기로 순환해서 setTimeout을 실행한다. 지정된 시간 후에 한 번만 실행한다.
문자메시지나 메일박스에서 인증코드를 60초 카운트다운하는 기능을 실현할 때 주로 다음과 같은 이해하기 쉬운 방법을 사용하고 setTimeout을 사용한다.
function invokeSettime(obj){
    var countdown=60;
    settime(obj);
    function settime(obj) {
        if (countdown == 0) {
            $(obj).attr("disabled",false);
            $(obj).text("     ");
            countdown = 60;
            return;
        } else {
            $(obj).attr("disabled",true);
            $(obj).text("(" + countdown + ") s     ");
            countdown--;
        }
        setTimeout(function() {
                    settime(obj) }
                ,1000)
    }
}

하지만 setInterval을 사용하면 좀 더 간결하게 쓸 수 있을 것 같아서 추천합니다.
function resendCpatcha (btnEle, countdown){
        btnEle.text('     ' + '(' + countdown + ')');
        var t = setInterval(function() {
            if (--countdown === 0){
                clearInterval(t);
                btnEle.attr('disabled',false);
                btnEle.text('       ');
            } else{
                btnEle.attr('disabled',true);
                btnEle.text('     ' + '(' + countdown + ')');
            }
        }, 1000);
    }

좋은 웹페이지 즐겨찾기