Maison > interface Web > js tutoriel > Minuterie simple implémentée dans les compétences javascript_javascript

Minuterie simple implémentée dans les compétences javascript_javascript

WBOY
Libérer: 2016-05-16 15:49:44
original
1360 Les gens l'ont consulté

J'ai récemment écrit de nombreux mini-jeux interactifs sur WeChat, tels que des flocons de neige, des clics à durée limitée pour gagner des prix, des puzzles à durée limitée, des questions à réponse à durée limitée, etc. Ce sont tous des « jeux à durée limitée » ' (en fait, ils ne sont pas considérés comme des jeux, tout au plus sont-ils un peu divertissants) Juste une petite interaction)

Il y a 4 délais indiqués ci-dessus, oui, c'est vrai, ce qui est enregistré ici est le « minuteur » récemment écrit...

Eh bien, le timer peut être implémenté avec un seul setInterval ou setTimeout, et le code ne dépassera pas dix lignes !

Mais pourquoi ne pas écrire une minuterie réutilisable avec la mentalité de chercher les ennuis ?

1. Peut compter à rebours et compter en avant

2. Réinitialiser, mettre en pause, arrêter, démarrer les fonctions

//计时器
window.timer = (function(){
  function mod(opt){
    //可配置参数 都带有默认值
    //必选参数
    this.ele = typeof(opt.ele)=='string'?document.getElementById(opt.ele):opt.ele;//元素
    //可选参数
    this.startT = opt.startT||0;//时间基数
    this.endT = opt.endT=='undefined'?24*60*60:opt.endT;//结束时间 默认为一天
    this.setStr = opt.setStr||null;//字符串拼接
    this.countdown = opt.countdown||false;//倒计时
    this.step = opt.step||1000;
    //不可配置参数
    this.timeV = this.startT;//当前时间
    this.startB = false;//是否启动了计时
    this.pauseB = false;//是否暂停
    this.init();
  }
  mod.prototype = {
    constructor : 'timer',
    init : function(){
      this.ele.innerHTML = this.setStr(this.timeV);
    },
    start : function(){
      if(this.pauseB==true||this.startB == true){
        this.pauseB = false;
        return;
      }
      if(this.countdown==false&&this.endT<=this.cardinalNum){
        return false;
      }else if(this.countdown==true&&this.endT>=this.startT){
        return false;
      }
      this.startB = true;
      var v = this.startT,
        this_ = this,
        anim = null;
      anim = setInterval(function(){
        if(this_.startB==false||v==this_.endT){clearInterval(anim);return false}
        if(this_.pauseB==true)return;
        this_.timeV = this_.countdown&#63;--v:++v;
        this_.ele.innerHTML = this_.setStr(this_.timeV);
      },this_.step);
    },
    reset : function(){
      this.startB = false;
      this.timeV = this.startT;
      this.ele.innerHTML = this.setStr(this.timeV);
    },
    pause : function(){
      if(this.startB == true)this.pauseB = true;
    },
    stop : function(){
      this.startB = false;
    }
  }
  return mod;
})(); 
Copier après la connexion

Méthode d'appel :

var timerO_1 = new timer({
      ele : 'BOX1',
      startT : 0,
      endT : 15,
      setStr : function(num){
        return num+'s';
      }
    });
var timerO_2 = new timer({
      ele : 'BOX2',
      startT : 30,
      endT : 0,
      countdown : true,
      step : 500,
      setStr : function(num){
        return num+'s';
      }
    });
Copier après la connexion

La méthode setStr transmise ici est le traitement de la chaîne avant que l'heure actuelle calculée par le compteur ne soit écrite dans ele

Que le compte à rebours soit un compte à rebours, la valeur par défaut est en avant

Vous pouvez obtenir l'heure actuelle via timerO.timeV

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal