endTime : number 结束的时间
    showEndTime:true / false 是否显示结束的时间
    endDom: dom 显示结束时间的html元素
    ShowDistanceEndTime:true / false 是否显示距离结束时间的时分秒倒计时
    showTime:{
    showHour:dom 需要显示距离结束时间的小时数的html元素
    showMinute:dom 需要显示距离结束时间的分钟数的html元素
    showSecond:dom 需要显示距离结束时间的秒数的html元素
    } 显示距离结束时间的时分秒的元素,以对象的形式传入

    代码如下

    1. (function () {
    2. function CountDown(option, self) {
    3. // 结束时间
    4. this.endTime = Date.parse(option.endTime) ? Date.parse(option.endTime) / 1000 : false;
    5. // 是否显示结束时间
    6. this.showEndTime = option.showEndTime || false;
    7. // 显示结束时间的html元素
    8. this.endDom = option.endDom || null;
    9. // 是否显示距离结束的时间
    10. this.ShowDistanceEndTime = option.ShowDistanceEndTime || true;
    11. /**
    12. * 显示距离时间的结束的html元素
    13. * showTime = {
    14. * showHour: $('.timmer__unit_hour'), 显示时的元素
    15. * showMinute: $('.timmer__unit_minute'), 显示分的元素
    16. * showSecond: $('.timmer__unit_second'), 显示秒的元素
    17. * }
    18. */
    19. this.showTime = option.showTime;
    20. this.warp = self;
    21. this.timer = null;
    22. this.isEnd = false;
    23. }
    24. CountDown.prototype.init = function () {
    25. this.timeDifferens()
    26. // 判断是否显示结束时间
    27. if(this.showEndTime){
    28. var endtime = new Date(this.endTime * 1000);
    29. var hours = endtime.getHours() <= 0 ? "24": endtime.getHours();
    30. var minutes = endtime.getMinutes() <= 0 ? "00" :endtime.getMinutes()
    31. this.endDom.text(hours+":"+minutes)
    32. }
    33. },
    34. /**
    35. * 获取距离结束的时间的时间差
    36. */
    37. CountDown.prototype.timeDifferens = function () {
    38. // 判断结束时间是否有误
    39. if (!this.endTime) { return false; }
    40. // 判断是否结束
    41. var nowTime = new Date().getTime() / 1000;
    42. if (nowTime > this.endTime) {
    43. this.isEnd = true;
    44. this.rendInfo()
    45. return;
    46. }
    47. var difference = this.endTime - nowTime;
    48. var self = this;
    49. this.timer = setInterval(() => {
    50. difference--;
    51. if (difference < 0) {
    52. self.isEnd = true;
    53. self.rendInfo()
    54. clearInterval(self.timer)
    55. }
    56. self.computeTime(difference)
    57. }, 1000);
    58. }
    59. /**
    60. * 换算时间差
    61. * @param {Number} time 时间差
    62. */
    63. CountDown.prototype.computeTime = function (time) {
    64. this.hour = Math.floor(time / 3600);
    65. this.minute = Math.floor(time % 3600 / 60);
    66. this.second = Math.floor(time % 3600 % 60);
    67. this.rendInfo()
    68. }
    69. /**
    70. * 渲染信息
    71. */
    72. CountDown.prototype.rendInfo = function () {
    73. if (this.ShowDistanceEndTime) {
    74. if (this.isEnd) {
    75. $(this.showTime.showHour).text('已');
    76. $(this.showTime.showMinute).text('结');
    77. $(this.showTime.showSecond).text('束');
    78. return;
    79. } else {
    80. if (this.hour < 10) {
    81. $(this.showTime.showHour).text("0" + this.hour);
    82. } else {
    83. $(this.showTime.showHour).text(this.hour);
    84. }
    85. if (this.minute < 10) {
    86. $(this.showTime.showMinute).text("0" + this.minute);
    87. } else {
    88. $(this.showTime.showMinute).text(this.minute);
    89. }
    90. if (this.second < 10) {
    91. $(this.showTime.showSecond).text("0" + this.second);
    92. } else {
    93. $(this.showTime.showSecond).text(this.second);
    94. }
    95. }
    96. }
    97. }
    98. $.fn.extend({
    99. countDown: function (option) {
    100. var obj = new CountDown(option, this);
    101. obj.init()
    102. }
    103. })
    104. })($ || jQuery)

    调用方式演示

    1. $('countdown-warp').countDown({
    2. endTime: '2020-8-30 24:00:00',
    3. showEndTime: true,
    4. endDom: $('.endTime'),
    5. ShowDistanceEndTime: true,
    6. showTime: {
    7. showHour: $('.timmer__unit_hour'),
    8. showMinute: $('.timmer__unit_minute'),
    9. showSecond: $('.timmer__unit_second'),
    10. },
    11. })