javascript 倒计数功能

最近在项目中遇到一个倒计时功能,在网上没有找到合适的,就自己写了个方法。贴在这里,权且当个记录。

export const timeRun = (timeStr, callBack) => {
  let timeArr = timeStr.split(':');
  if (timeArr.length == 2) {//格式 5:00
    let minute = timeArr[0];
    let second = timeArr[1];
    if (second == '00') {
      let minuteInt = parseInt(minute);
      minuteInt--;
      if (minuteInt.toString().length == 1) {
        minute = "0" + minuteInt;
      } else {
        minute = minuteInt.toString();
      }
      second = "59";
    } else {
      let secondInt = parseInt(second);
      secondInt--;
      if (secondInt.toString().length == 1) {
        second = "0" + secondInt;
      } else {
        second = secondInt.toString();
      }
    }

    if ((minute == '00' || minute == '0') && (second == '00' || second == '0')) {
      callBack();
      return "00:00";
    }

    return minute + ":" + second;
  } else if (timeArr.length == 3) {//格式 1:00:00
    let hour = timeArr[0];
    let minute = timeArr[1];
    let second = timeArr[2];

    if (second == '00') {
      if (minute == '00') {
        let hourInt = parseInt(hour);
        hourInt--;
        minute = '59';
        hour = hourInt.toString();
      } else {
        let minuteInt = parseInt(minute);
        minuteInt--;
        if (minuteInt.toString().length == 1) {
          minute = "0" + minuteInt;
        } else {
          minute = minuteInt.toString();
        }
        second = "59";
      }
    } else {
      let secondInt = parseInt(second);
      secondInt--;
      second = second.toString();
    }
    if ((hour == '00' || hour == '0') && (minute == '00' || minute == '0') && (second == '00' || second == '0'))

      return hour + ":" + minute + ":" + second;
  } else {
    console.error("倒计时时间格式错误");
  }
}
View Code

使用方法如下,其中finished是回调函数:

let time = '05:00';
let timer = setInterval(() => {
          time = timeRun(time, finished);
          if(time == "00:00" || time == "0:00:00"){
            clearInterval(timer);
          }
        }, 1000);
View Code
原文地址:https://www.cnblogs.com/heshuaiblog/p/10653454.html