朋友公司开年会,帮忙写了个抽奖的demo,源码如下,github中有程序:

html:

 <header>
lottery demo
</header>
<div class="main">
<ul>
<li><img src="photos/name_s.jpg" alt="童年照" class="little_pic"></li>
<li><img src="1.jpg" alt="真相照" class="truth_pic"></li>
</ul>
<input type="button" value="开始" class="lottery">
<select class="prize">
<option value="1">一等奖</option>
<option value="2">二等奖</option>
<option value="3">三等奖</option>
</select>
<input type="button" value="真相" class="truth">
</div>
<footer>
<span class="prize_num"></span>
</footer>

css:

 body{
margin:;
padding:;
background-color: #4F81BC;
color: #fff;
text-align: center;
}
ul{
list-style-type: none;
}
header{
width: 500px;
margin: 100px auto 0 auto;
font-size: 24px; /* 显示“lottery demo”字体大小 */
/* border:1px solid #000; */
}
ul{
width: 800px; /* 两张图片共占的宽度 */
height: 400px; /* 显示图片的高度 */
margin:50px auto;
overflow: hidden;
}
li{
width: 50%;
float: left;
height: 100%;
}
img{
width: 100%;
height: 100%;
}
footer{
margin-top: 50px;
font-size: 24px; /* 显示“*等奖”字体大小 */
}

js:

 /* 20150609 */
var lottery = document.getElementsByClassName('lottery')[0];
var truth = document.getElementsByClassName('truth')[0];
var littlePic = document.getElementsByClassName('little_pic')[0];
var truthPic = document.getElementsByClassName('truth_pic')[0];
var prize = document.getElementsByClassName('prize')[0];
var prizeNum = document.getElementsByClassName('prize_num')[0];
var flag = 0;
var num = 0;
var timer;
var t_pic; function Game(){
this.namesArr=["name_查","name_萍","name_s"]; /*童年照片名*/
this.truthsArr=["p1","p2","p3"]; /*成年照片名,与上面的顺序对应*/
}; Game.prototype.init = function(){
lottery.value = "开始";
prizeNum.innerHTML = "一等奖";
}; Game.prototype.start = function(){
var names = this.namesArr;
var truths = this.truthsArr;
prize.addEventListener("change",function(evt){
var index = prize.selectedIndex;
getPrize(index);
},false); lottery.addEventListener("click",function(evt){
if(flag===0){
lottery.value = "停止";
flag=1;
truthPic.src = "1.jpg";
getPicName(names,truths);
}else{
lottery.value = "开始";
flag=0;
stopPic(names,truths);
}
},false); truth.addEventListener("click",function(evt){
truthPic.src = t_pic;
},false);
}; function getPicName(names,truths){
num = 0;
timer = setInterval(function(){
num++;
if(num===names.length){
num = 0;
}
littlePic.src = "photos/"+ names[num] +".jpg";
t_pic = "photos/"+ truths[num] +".jpg";
},100);
} function stopPic(names,truths){
clearInterval(timer);
if(names.length>=2){
names.splice(num,1);
truths.splice(num,1);
}else{
alert("Game over!");
}
} function getPrize(index){
prizeNum.innerHTML = prize.options[index].text;
} function play(){
var game = new Game();
game.init();
game.start();
} play();

可下载源码查看效果。

js一个抽奖的例子的更多相关文章

  1. js switch表达式的例子

    switch 这种表达式在很多语言中都有,比如java, C等待, 使用switch比使用if else 来得方便,来得清晰.  前言 switch 这种表达式在很多语言中都有,比如java, C等待 ...

  2. 用CSS实现一个抽奖转盘

    效果 基本是用CSS实现的,没有用图片,加一丢丢JS.完全没有考虑兼容性. 首先画一个转盘, <!DOCTYPE html> <html lang="en"> ...

  3. 小型音乐播放器插件APlayer.js的简单使用例子

      本篇博客将会给出一个小型音乐播放器插件APlayer.js的使用例子.关于APlayer.js的具体介绍和Github地址,可以参考: https://github.com/MoePlayer/A ...

  4. css 如何“画”一个抽奖转盘

    主要描述的是如何运用 css 绘制一个抽奖转盘,并运用原生 js 实现转盘抽奖效果. 先来张效果图: 布局 一般来说,转盘一般有四个部分组成:外层闪烁的灯.内层旋转的圆盘.圆盘上的中奖结果.指针. 所 ...

  5. 跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

    跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击 一.总结 一句话总结:比如用户留言功能,用户留言中写的是网页可执行代码,例如js代码,然后这段代码在可看到这段留言的不同一户的显示上就会 ...

  6. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

  7. js 回调函数小例子

    js 回调函数小例子 <script> //将函数作为另一个函数的参数 function test1(){ alert("我是test1"); } function t ...

  8. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  9. Spring-Context之一:一个简单的例子

    很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的 ...

随机推荐

  1. Javascript 中的神器——Promise

    Promise in js 回调函数真正的问题在于他剥夺了我们使用 return 和 throw 这些关键字的能力.而 Promise 很好地解决了这一切. 2015 年 6 月,ECMAScript ...

  2. [Nginx] - 负载均衡配置

    nginx.conf文件内容: user www www; worker_processes 2; error_log /usr/local/nginx/logs/serror.log crit; p ...

  3. [经验交流] Mesos-dns 和 Marathon-lb 简要使用方法

    Mesos-dns 和 Marathon-lb 是mesosphere 官网提供的两种服务发现和负载均衡工具.官方的文档主要针对DCOS,针对其它系统的相关中文文档不多,下面是我在Centos7上的安 ...

  4. 关于PetaPoco的T4模板使用

    PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM.PetaPoco介绍:http://www.cnblogs.com/youring2/archive/2012/06/ ...

  5. LeetCode 328. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  6. MySQL For Windows修改最大连接数

    1.从官网下载安装MySQL Installer.MySQL Installer 提供了简单易用.向导式的 MySQL 软件的安装体验过程(目前只支持 Windows),包含的产品有: MySQL S ...

  7. Spring MVC基本配置@controller和@RequestMapping解释

    一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml   dao.xml 2)解决:在web.xml中 <init-param> <param-name& ...

  8. Norflash控制器的Verilog建模之二(仿真)

    前言:经过几天修改,norflash控制器基本已经完成,通过仿真.完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver ...

  9. C语言atan2()函数:求y/x的反正切值

    头文件:#include <math.h> atan2() 函数用于求 y / x 的反正切值.其原型为:    double atan2(double y, double x); [参数 ...

  10. MVVM模式下弹出窗体

    原地址:http://www.cnblogs.com/yk250/p/5773425.html 在mvvm模式下弹出窗体,有使用接口模式传入参数new一个对象的,还有的是继承于一个window,然后在 ...