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

简介: 微信公众号开发实例之全局计时器的案例
需求一: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="width: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);
               }
           }
        })
     };


需求二:点击开始服务按钮,从零开始计算时间

//先看一个单纯的倒计时的功能页面
<!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值,共用全局计时器

//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>
相关文章
|
7月前
|
小程序 JavaScript 前端开发
【微信小程序】-- 案例 - 本地生活(二十)
【微信小程序】-- 案例 - 本地生活(二十)
|
11天前
|
API 开发者
微信native支付对接案例详解
本文详细介绍了微信Native支付的对接流程,包括效果展示、产品介绍、接入前准备、开发指引、API列表、支付通知等,并强调了只有通过微信认证的服务号才能对接微信支付。每年需支付300元认证费用。
25 3
|
2月前
|
缓存 数据可视化 Serverless
微信小游戏 案例一 像素飞机
微信小游戏 案例一 像素飞机
22 2
|
2月前
|
开发框架 前端开发 JavaScript
微信小游戏案例三 抓星星
微信小游戏案例三 抓星星
98 0
微信小游戏案例三 抓星星
|
2月前
|
JavaScript 小程序 前端开发
微信小程序 案例二 飞机大战
微信小程序 案例二 飞机大战
69 0
微信小程序 案例二 飞机大战
|
7月前
|
开发者
微信公众平台开发基本配置
微信公众平台开发基本配置
174 0
|
5月前
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付16----创建案例项目-引入Swagger
支付系统----微信支付16----创建案例项目-引入Swagger
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
|
5月前
|
小程序
【微信小程序】实战案例 -- 向订阅用户发送消息(范例:报名提醒)
【微信小程序】实战案例 -- 向订阅用户发送消息(范例:报名提醒)
301 0