• 微信公众号开发实例之全局计时器的案例


    图片.png
    需求一:index.html里面的数据从后台获取并渲染在前端页面

    代码:

    //index.html页面JS代码如下
    //判断openid是否已经获取
         if(sessionStorage.getItem("openid") == null){
              //获取用户的openId
              $.ajax({
                 url : "getOpenId.action",
                   dataType : "json",
                   type : "get",
                   data : "code="+GetQueryString("code"),
                   success : function(data){
                       //保存openid
                       if(data != '')
                       sessionStorage.setItem("openid",data);  
                       //根据openid查询sa车辆
                       getCars(data);
                   }
             })
         }else{
             getCars(sessionStorage.getItem("openid"))
         }
    
     //获取登记车辆
         function getCars(openid){
              $.ajax({
                   url : "getCars.action",
                   dataType : "json",
                   type : "get",
                   data : "openid="+openid,
                   success : function(data){
                       if(data == -1){
                           $("#flag").val("1");
                           return;
                       };
                       if (data.length > 0) {
                           var laver = "";
                           for (var i = 0; i < data.length; i++) {
                               laver += '<li>';
                               laver += '<div  class="imgpanel"><a href="server.html?carNum='+data[i].carNum+'&beacon='+data[i].beacon+'">';
                               if(data[i].isCommit == 2){
                                   laver += '<img src="img/bmw_red.png" class="am-img-responsive" />';
                               }else if(data[i].isCommit == 1){
                                   laver += '<img src="img/bmw.png" class="am-img-responsive" />';
                               }else{
                                   laver += '<img src="img/bmw_grey.png" class="am-img-responsive" />';
                               }
                               
                               laver += '</a></div>';
                               laver += '<a href="server.html?carNum='+data[i].carNum+'&beacon='+data[i].beacon+'"> <div class="infopanel" style="50%;">';
                               
                               if(data[i].beacon != null){
                                   laver += '<h3>'+data[i].carNum+'</h3><p>'+data[i].beacon+'</p></div></a>';
                               }else{
                                   laver += '<h3>'+data[i].carNum+'</h3><p></p></div></a>';
                               }
                               
                               laver += '<div class="imgpanel"  style="float: right; padding: 24px;">';
                               laver += '<a href="map.html?deviceId='+data[i].beacon+'"><img src="img/nav.png" class="am-img-responsive" /></a></div>';
                               laver += '</li>';  
                       }
                           laver += "<li  style='border:none'></li><li  style='border:none'></li>"
                       $('#car').html(laver);
                   }
               }
            })
         };
         
    
    需求二:点击开始服务按钮,从零开始计算时间
    图片.png
    //先看一个单纯的倒计时的功能页面
    <!DOCTYPE html>  
    <html>  
    <head>  
       <meta charset="UTF-8">  
       <title></title>  
     
       <style>  
           *{margin:0;padding:0;}  
           #box{width:400px;height:400px;margin:40px auto;}  
           #box div{width:200px;height:40px;border:1px #F3C solid;text-align:center;float:left;font-size:26px;}  
           #box button{float:left;margin-top:10px;margin-left:20px;}  
           #box span{float:left;width:200px;height:100px;overflow-y:auto;display:block;border:1px #C9C solid;margin-top:10px;}  
       </style>  
     
    </head>  
    <body>  
    <div id="box">  
       <div id="timer"></div>  
       <button onClick="btTime()">开始服务</button>  
       
     
    </div>  
    <script type="text/javascript">  
       var timer=document.getElementById("timer");  
       var butt=document.getElementsByTagName("button");  
     
       var hour='00';  //时  
       var minus='00';//分  
       var seconds='00';//秒  
     
       timer.innerHTML=hour+":"+minus+":"+seconds;  
       var x=0,y=0,f=0,a=0,b=0,t1,t2;  
       var flag=0;  
       function  btTime(){  
           /*ajax:*/  
     
     
           switch (flag){  
               case 0 :  
                   flag=1;  
                   w=1;  
                   t1=setInterval(beginS,1000);  
                   butt[0].innerHTML='结束服务';break;  
               case 1 :  
                   flag=2;  
                   clearInterval(t1);  
                   butt[0].innerHTML='服务已结束';break;  
     
           }  
       }  
       function beginS(){//计算秒  
        x ++;  
        if(x<10){  
            seconds = '0' + x;  
        }else if(x>=10&&x<=59){  
            seconds = x;  
        }else if(x>59){  
            seconds = '00';  
            x = 0;  
            a++;  
        }  
     
           if(a<10){  
               minus = '0' + a;  
           }else if(a>=10&&a<=59){  
               minus = a;  
           }else if(a>59){  
               minus = '00';  
               a = 0;  
               b++;  
           }  
     
           if(b<10){  
               hour = '0' + b;  
           }else if(b>=10&&b<=59){  
               hour = b;  
           }  
     
           timer.innerHTML=hour+":"+minus+":"+seconds;  
     
       }  
     
     
     
    </script>  
    </body>  
    </html>
    
    需求三:获取index页面的每一个时间和车牌的key,value值,共用全局计时器
    图片.png
    //server.html在项目里面的功能页面JS代码如下:
    <!--html部分-->
    <div id="timer"></div>  <!--对应时间-->
    <div id="carNum"></div> <!--对应车牌号-->
    <button id="btn"></button><!--开始结束按钮-->
    
    <script type="text/javascript">
        $(function(){
            $("#carNum").html(GetQueryString("carNum"));
            var a=0,b=0,c=0,t1;
             $.ajax({
                  url : "getTimer.action",
                  dataType : "json",
                  type : "get",
                  data : "beacon="+GetQueryString("beacon"),
                  success : function(data){
                      if(data == null){//还没有开始服务
                          $("#btn").html("开始服务");
                          $("#timer").html("00:00:00");
                          return;
                      }else if(data.endTime != 0){//服务已经结束
                          $("#timer").html("00:00:00");
                          $("#btn").html("服务已结束");
                          $("#btn").css({
                              background:"#f2f2f2",
                              color:"#898989"
                          })
                          //计算时分秒
                          var time = data.endTime-data.beginTime;
                          hour = parseInt(time/1000/60/60);
                          if(hour<10){hour=''+0+hour;}
                          minus = parseInt((time/1000/60 - (hour*60)));
                          if(minus<10){minus=''+0+minus;}
                          seconds = parseInt(time/1000-((hour*60*60)+(minus*60)));
                          if(seconds<10){seconds=''+0+seconds;}
                          $("#timer").html(hour+":"+minus+":"+seconds);
                          return;
                          
                      }else{//服务开始,还没有结束服务
                          $("#timer").html("00:00:00");
                          $("#btn").html("结束服务");
                          //计算时分秒
                          var time= new Date().getTime()-data.beginTime;  //时间差的毫秒数
                          c = parseInt(time/1000/60/60);
                          b = parseInt((time/1000/60 - (c*60)));
                          a = parseInt(time/1000-((c*60*60)+(b*60)));
                          
                          t1=setInterval(beginS,1000);
                          return;
                      }
                  }
              })
            
              
             
             function beginS(){//计算秒
                 a++;
                 if(a<10){
                     seconds = '0' + a;
                 }else if(a>=10&&a<=59){
                     seconds = a;
                 }else if(a>59){
                     seconds = '00';
                     a = 0;
                     b++;
                 }
    
                    if(b<10){
                        minus = '0' + b;
                    }else if(b>=10&&b<=59){
                        minus = b;
                    }else if(b>59){
                        minus = '00';
                        b = 0;
                        c++;
                    }
    
                    if(c<10){
                        hour = '0' + c;
                    }else if(c>=10&&c<=59){
                        hour = c;
                    }
                    $("#timer").html(hour+":"+minus+":"+seconds);
                }
            
            //按钮点击事件
            $("#btn").on("click",function(){
                if($(this).html()=="开始服务"){
                     t1=setInterval(beginS,1000);
                     $(this).html("结束服务")
                     //记录sa开始服务时间
                     $.ajax({
                          url : "setBeginTime.action",
                          dataType : "json",
                          type : "POST",
                          data : {"beacon":GetQueryString("beacon"),"carNum":GetQueryString("carNum")},
                          success : function(data){
                             
                          }
                      })
                      
                      return;
                }
                if($(this).html()=="结束服务"){
                    if(confirm("是否结束服务")){
                       clearInterval(t1);
                       $(this).css({
                          background:"#f2f2f2",
                          color:"#898989"
                       })
                       $(this).html("服务已结束");
                       //记录sa结束服务的时间
                       $.ajax({
                          url : "setEndTime.action",
                          dataType : "json",
                          type : "get",
                          data : {"beacon":GetQueryString("beacon")},
                          success : function(data){
                             
                          }
                      })
                    }
                    
                    return;
                }
                
                return;
            })
            
            
          //获取地址栏后面的参数 (从index.html跳转过来的时候,用正则表达式获取参数)
          function GetQueryString(name){
               var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
               var r = window.location.search.substr(1).match(reg);
               if(r!=null)return  decodeURI(r[2]); return null;
          }
            
            
        })
    
    </script>
    

    原文作者:祈澈姑娘
    原文链接:https://www.jianshu.com/u/05f416aefbe1
    创作不易,转载请告知

    90后前端妹子,爱编程,爱运营,爱折腾。
    坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,欢迎大家一起探讨交流。
    有个很难涨粉的的公众号叫:【编程微刊】

  • 相关阅读:
    redhat Nginx 安装
    黑客经验谈:跳板攻击入侵技术实例解析
    Linux各版本的本地root密码破解方法
    python学习笔记
    Git 提交的正确姿势:Commit message 编写指南
    数论 + 扩展欧几里得
    数论
    flutter 延时函数delay Loading页面
    flutter 切换tab后保留tab状态
    iOS 应用"无法安装应用程序 因为证书无效"的解决方案
  • 原文地址:https://www.cnblogs.com/ting6/p/9725728.html
Copyright © 2020-2023  润新知