这篇文章主要介绍了jquery 抽奖小程序的相关资料,这里提供了详细的思路及实现代码和实现效果图,需要的朋友可以参考下
这些日子,到处都可以看到关于微信小程序的新闻或报到,在博客园中写关于微信小程序的也不少。但是今天我要说的不是微信小程序,而是用简单的jquery写的一个好玩的抽奖小程序。最后介绍了后面关于抽奖小程序的一些后面更新的方向和Math.random的一些小知识。(最终结果保存在:http://runjs.cn/detail/rq3bbhto,点击可查看效果)
下面先看一个简单的抽奖小程序的例子:
html:
登录后复制
css:
*{margin: 0; padding: 0;} .g-lottery-box { width: 400px; height: 400px; margin-left: 30px; position: relative; background: url(images/0.gif) no-repeat; margin: 0 auto; } .g-lottery-box .g-lottery-img { width: 340px; height: 340px; position: relative; background: url(images/1.png) no-repeat; left: 30px; top: 30px; } .g-lottery-box #clik { width: 186px; height: 186px; position: absolute; top: 77px; left: 77px; background: url(images/2.png) no-repeat; }登录后复制
js:
/* 注意引用的顺序 * [removed][removed] * [removed][removed] * [removed][removed] * * Creat By foodoir 2010-10-11 * * */ var raNum; //注意:要将raNum设置为全局变量,容易出错 $(function() { $('#clik').click(function() { // raNum = Math.random()*360; $(this).rotate({ duration:3000, angle:0, animateTo:raNum+720+360, callback:function(){ A(); } }); }); }); function A(){ if(0关于小程序的一些思考:
思考一:在A()方法中用了很多if…else,让代码看上去不是那么的优美,有没有什么办法可以让代码看上去又没一点?
解决思路:用switch方法
switch(data) { case 1: rotateFunc(1, 0, '恭喜您获得2000元理财金!'); break; case 2: rotateFunc(2, 60, '谢谢参与~再来一次吧~'); break; case 3: rotateFunc(3, 120, '恭喜您获得5200元理财金!'); break; case 4: rotateFunc(4, 180, '恭喜您获得100元京东E卡,将在次日以短信形式下发到您的手机上,请注意查收!'); break; case 5: rotateFunc(5, 240, '谢谢参与~再来一次吧~'); break; case 6: rotateFunc(6, 300, '恭喜您获得1000元理财金!'); break; } //后面还需要定义函数rotateFunc,在这里直接使用另外一种方法来完成 var rotateFunc = function(awards, angle, text) { isture = true; $btn.stopRotate(); $btn.rotate({ angle: 0, duration: 4000, //旋转时间 animateTo: angle + 1440, //让它根据得出来的结果加上1440度旋转 callback: function() { isture = false; // 标志为 执行完毕 alert(text); } }); };登录后复制思考二:实际中的大转盘可以转好几圈,而此时的效果转了不到一圈,我想要看到转几圈的效果怎么办?
解决思路:animateTo:raNum在这后面加上360乘以想要转的圈数的结果,(以抽奖三次为例)
animateTo:raNum+360*3
思考三:我们可不可以对抽奖次数进行限制?
解决思路:(以抽奖三次为例)
$(function() { var i =0; $('#clik').click(function() { i++; if(i>3){ alert("您的抽奖机会已经用完!"); } //代码省略 }); });登录后复制思考四:按照前面的思路,按理说每次抽奖能中的概率为1/3,但是我们在实际中并不是那么的想让用户抽中,我们该怎么办?
解决思路:1、我们直接改变raNum,(假如不想让用户获得e卡)
raNum = Math.random()*360; if(1502、我们修改判断条件
else if(150
思考五:对于抽奖剩余次数,我们可不可以提醒用户?
解决思路:创建一个新的变量,然后通过DOM方法显示出来
登录后复制欢迎来到foodoir抽奖小程序,您还有3次抽奖机会
h3{ text-align: center; font-family: "微软雅黑", "microsoft yahei"; line-height: 60px; } h3 span{ font-size: 40px; line-height: 60px; font-family: elephant; display: inline-block; padding: 5px 20px; border: 2px solid red; border-radius: 10px; color: #f00; background-color: yellow; } var ii = 3-i; if(ii>=0){ $('#ii').html(ii); }思考六:在我们玩扣扣游戏时,经常会看到有滚动屏提示刚刚有谁谁抽到了奖,我们该如何实现?
解决思路:这个需要我们在后台调数据,但是我们可以先自己设置数据并查看效果,我们还可以用Javascript中的Date
登录后复制var now =new Date(); var hours = now.getHours(); var minutes = now.getMinutes(); var seconds = now.getSeconds(); var t = hours+":"+minutes+":"+seconds; $('#time').html(t);
到这里,我们的小程序的效果就成这样了:
更多思考--》我们还可以将改程序更完善。
1、在现有页面中增加抽奖榜,将抽到奖的用户和抽到奖的时间显示出来,并且能够自动刷新(AJAX技术实现)
2、增加登录和注册功能,注册成功并登录后方可进行抽奖活动
3、对于抽到的奖,我们可以设置其链接点击后可以进行到该奖可以使用的界面
4、……或者说我们这样--》
1、在现有页面中增加抽奖榜,将抽到奖的用户和抽到奖的时间显示出来,并且能够自动刷新
2、抽到奖后,我们可以领取奖励,前提是老用户登陆后可以领取,而新用户需要注册后才能领取,并且新用户注册后还送三次抽奖机会。
3、登录完成后进入一个积分商城,有几个排行榜(财富榜和兑换榜)还有可以兑换的等价替换物
4、……关于Math.random()
ECMAScript 规范是这样描述 Math.random() 的:“返回一个整数,该整数的取值范围大于等于 0 而小于 1,浏览器开发商使用自定义的算法或策略从该范围内实现均匀分布的随机或伪随机效果。”
显然,规范中遗漏了大量的细节。首先,它没有定义精度。由于 ECMAScript 使用 IEEE 754 双精度浮点数存储所有数值,所以理论上应该有 53 位的精确度,即随机数的随机范围是 [1/x^53, 2^53-1],但实际上,V8 中的 Math.random() 只有 32 位精度,不过这已经足够我们用的了。
真正的问题是规范放任浏览器开发者自由实现该方法,且没有限制最小的周期长度,唯一对分布的要求也只是“近似均匀”。关于8 PRNG()
var MAX_RAND = Math.pow(2, 32); var state = [seed(), seed()]; var mwc1616 = function mwc1616() { var r0 = (18030 * (state[0] & 0xFFFF)) + (state[0] >>> 16) | 0; var r1 = (36969 * (state[1] & 0xFFFF)) + (state[1] >>> 16) | 0; state = [r0, r1]; var x = ((r0登录后复制上述代码就是 V8 PRNG 的核心逻辑。在老版本的 V8 源码中对此有一段注释:“随机数生成器使用了 George Marsaglia 的 MWC 算法。”根据这段注释,我从谷歌搜索到了以下信息:
George Marsaglia 是一个毕生致力于 PRNG 的数学家,他还开发了用于测试随机数生成质量的工具Diehard tests
MWC(multiply-with-carry)是由 Marsaglia 发明的 PRNG 算法,非常类似于 LCG(linear congruential generators,线性同余法),其优势在于生成的循环周期更长,接近于 CPU 的循环周期。不过,V8 PRNG 与经典的 MWC 生成器并不相同,因为它不是对 MWC 生成器的简单扩展,而是组合使用了两个 MWC 子生成器(r0 和 r1),并最终拼接成一个随机数。这里略过相关的数学计算,只说结论,每个子生成器最长的循环周期长度都是 2^30,合并后为 2^60。
前面提到过,我们定义的标识符有 2^132 种可能性,所以 V8 的 Math.random() 并不能满足这一需求。尽管如此,我们仍使用该函数并假设生成的随机数是均匀分布的,那么生成一亿个标识符后出现碰撞的可能性才只有 0.4%,但现在发生碰撞的时间也太早了,所以我们的分析一定有什么地方出错了。之前已经证明循环周期长度是正确的,那么很有可能生成的随机数不是均匀分布的,一定有其他的结构影响了生成的序列。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
以上就是分享jquery抽奖小程序实现方法(代码)的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » 分享jquery抽奖小程序实现方法(代码)
发表评论 取消回复