首页前端开发JavaScriptjquery怎么实现九宫格抽奖

jquery怎么实现九宫格抽奖

时间2024-01-30 23:30:03发布访客分类JavaScript浏览351
导读:收集整理的这篇文章主要介绍了jquery怎么实现九宫格抽奖,觉得挺不错的,现在分享给大家,也给大家做个参考。jquery实现九宫格抽奖的方法:1、创建好前端展示的代码;2、通过jquery代码“$("#lottery a" .click(f...
收集整理的这篇文章主要介绍了jquery怎么实现九宫格抽奖,觉得挺不错的,现在分享给大家,也给大家做个参考。

jquery实现九宫格抽奖的方法:1、创建好前端展示的代码;2、通过jquery代码“$("#lottery a").click(function(){ ...} ”实现九宫格抽奖即可。

本文操作环境:windows7系统、jquery3.2.1版、DELL G3电脑

jquery怎么实现九宫格抽奖?

jquery——九宫格大转盘抽奖实例

一、用到的图片

二、代码如下,重点是js部分

!DOCTYPE htML>
    html>
    head>
    meta http-equiv="Content-type" content="text/html;
     charset=utf-8" />
    tITle>
    jQuery九宫格大转盘抽奖/title>
    style>
#lottery{
    width:570px;
    height:510px;
    margin:0px auto;
    border:4px solid #ba1809;
}
#lottery table{
    background-color:yellow;
}
#lottery table td{
    position:relative;
    width:190px;
    height:170px;
    text-align:center;
    color:#333;
font-index:-999}
#lottery table td img{
    display:block;
    width:190px;
    height:170px;
}
#lottery table td a{
    width:190px;
    height:170px;
    display:block;
    text-decoration:none;
    background:url(images/lottery1.jpg) no-repeat top center;
}
#lottery table td a:hover{
    background-image:url(images/lottery2.jpg);
}
#lottery table td.active .mask{
    display:block;
}
.mask{
      width:100%;
      height:100%;
      position:absolute;
      left:0;
      top:0;
      background:url(images/mask.png) no-repeat;
      display:none;
}
    /style>
    /head>
    body class="keBody">
    !--效果html开始-->
    div id="lottery">
      table border="0" cellpadding="0" cellspacing="0">
        tr>
          td class="lottery-unit lottery-unit-0">
    img src="images/gift0.jpg">
    div class="mask">
    /div>
    /td>
          td class="lottery-unit lottery-unit-1">
    img src="images/gift1.jpg">
    div class="mask">
    /div>
    /td>
          td class="lottery-unit lottery-unit-2">
    img src="images/gift2.jpg">
    div class="mask">
    /div>
    /td>
        /tr>
        tr>
          td class="lottery-unit lottery-unit-7">
    img src="images/gift7.jpg">
    div class="mask">
    /div>
    /td>
          td>
    a href="#">
    /a>
    /td>
          td class="lottery-unit lottery-unit-3">
    img src="images/gift3.jpg">
    div class="mask">
    /div>
    /td>
        /tr>
        tr>
          td class="lottery-unit lottery-unit-6">
    img src="images/gift6.jpg">
    div class="mask">
    /div>
    /td>
          td class="lottery-unit lottery-unit-5">
    img src="images/gift5.jpg">
    div class="mask">
    /div>
    /td>
          td class="lottery-unit lottery-unit-4">
    img src="images/gift4.jpg">
    div class="mask">
    /div>
    /td>
        /tr>
      /table>
    /div>
    script src="http://code.jquery.COM/jquery-latest.js">
    /script>
    script type="text/javascript">
VAR lottery={
  index:-1,  //当前转动到哪个位置,起点位置  count:0,  //总共有多少个位置  timer:0,  //setTimeout的ID,用clearTimeout清除  speed:20,  //初始转动速度  times:0,  //转动次数  cycle:50,  //转动基本次数:即至少需要转动多少次再进入抽奖环节  PRize:-1,  //中奖位置  init:function(id){
        if ($("#"+id).find(".lottery-unit").length>
0) {
          $lottery = $("#"+id);
          $units = $lottery.find(".lottery-unit");
          this.obj = $lottery;
          this.count = $units.length;
          $lottery.find(".lottery-unit-"+this.index).addClass("active");
    }
    ;
  }
,  roll:function(){
        var index = this.index;
        var count = this.count;
        var lottery = this.obj;
        $(lottery).find(".lottery-unit-"+index).removeClass("active");
        index += 1;
        if (index>
count-1) {
          index = 0;
    }
    ;
        $(lottery).find(".lottery-unit-"+index).addClass("active");
        this.index=index;
        return false;
  }
,  stop:function(index){
        this.prize=index;
        return false;
  }
}
    ;
function roll(){
      lottery.times += 1;
      lottery.roll();
    //转动过程调用的是lottery的roll方法,这里是第一次调用初始化  if (lottery.times >
     lottery.cycle+10 &
    &
 lottery.prize==lottery.index) {
        clearTimeout(lottery.timer);
        lottery.prize=-1;
        lottery.times=0;
        click=false;
  }
else{
    if (lottery.timeslottery.cycle) {
          lottery.speed -= 10;
    }
else if(lottery.times==lottery.cycle) {
          var index = Math.random()*(lottery.count)|0;
          lottery.prize = index;
        }
else{
          if (lottery.times >
     lottery.cycle+10 &
    &
     ((lottery.prize==0 &
    &
 lottery.index==7) || lottery.prize==lottery.index+1)) {
            lottery.speed += 110;
      }
else{
            lottery.speed += 20;
      }
    }
    if (lottery.speed40) {
          lottery.speed=40;
    }
    ;
        //console.LOG(lottery.times+'^^^^^^'+lottery.speed+'^^^^^^^'+lottery.prize);
        lottery.timer = setTimeout(roll,lottery.speed);
//循环调用  }
      return false;
}
    var click=false;
window.onload=function(){
      lottery.init('lottery');
  $("#lottery a").click(function(){
    if (click) {
    //click控制一次抽奖过程中不能重复点击抽奖按钮,后面的点击不响应      return false;
    }
else{
          lottery.speed=100;
          roll();
      //转圈过程不响应click事件,会将click置为false      click=true;
     //一次抽奖完成后,设置click为true,可继续抽奖      return false;
    }
  }
    );
}
    ;
    /script>
    !--效果html结束-->
    /body>
    /html>
    

效果如下:

三、注意事项

1、抽奖过程说明

上面只是前端展示的效果。中奖物品通过一个随机数生成。

var index = Math.random()*(lottery.count)|0;
    

真正开发中中奖物品是通过向后端接口发送请求返回的。

$("#lottery a").click(function(){
           var islogin=checkLogin();
       if(islogin){
//已登录用户才能去抽奖         if (click) {
              return false;
        }
else{
              //向后端接口发请求返回中奖结果          var geturl="http://xxxxxx?username="+username+"&
    token="+token;
           $.ajax({
            url:geturl,            type:"GET",            dataType:"json",           async:false,          success:function(data){
              if(data.errorcode==0){
                  var rewardid=data["message"]["rewardid"];
                  var cardno=data["message"]["rewardCardNo"];
                   var passno=data["message"]["rewardCardPass"];
                   var prize=-1;
                    var content="";
               if(rewardid=="iphone6"){
                   lottery.prize=0;
                   prize=0;
                  content="一部iphone6手机";
                  $("#content1").html(content);
                }
else if(rewardid=="PPTVKING"){
                    lottery.prize=1;
                  prize=1;
                   content="一部PPTV KING7s 3D影音手机";
                   $("#content1").html(content);
                /*...  */               }
else if(rewardid=="legao"){
                  lottery.prize=5;
                  prize=5;
                  content="一份乐高的玩具";
                    $("#content1").html(content);
               }
                                lottery.speed=100;
                  roll();
                  click=true;
                    return false;
             }
else{
              /*错误处理*/               if(data.errorcode==3){
                  $("#novip").show();
               }
else{
                  $("#notime").show();
               }
             }
           }
/*function结束*/         }
    );
/*ajax结束*/      }
/*else结束*/      }
}
    );
    

2、兼容性说明

.mask开始如下,用的是rgba,但是IE8不兼容,改为使用png图片background:url(images/mask.png) no-repeat;

.mask {
      width: 100%;
      height: 100%;
      position: absolute;
      left: 0;
      top: 0;
      background-color: rgba(252,211,4,0.5);
  display: none}
    

推荐学习:《jquery视频教程》

以上就是jquery怎么实现九宫格抽奖的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: jquery怎样判断table中tr是否被选...下一篇:jquery怎么禁止div猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: jquery怎么实现九宫格抽奖
本文地址: https://pptw.com/jishu/593182.html
jquery怎样选择除了最后一列的其它元素 jquery怎样判断table中tr是否被选中

游客 回复需填写必要信息