基于JavaScript实现抽奖系统


Posted in Javascript onJanuary 16, 2018

用JavaScript实现一个简单的抽奖系统,有【开始】按钮和【停止】按钮。

功能:

- 点开始按钮开始抽奖,随机出现奖品名称;
- 点停止按钮即可停止抽奖;
- 按下回车键可切换开始抽奖和停止抽奖。

基于JavaScript实现抽奖系统

html代码:

创建html结构,最基础的要含有显示的奖品名称和开始、停止按钮。

<!doctype html>
<html>

<head>
 <title>抽奖系统</title>
 <meta charset="utf-8">
 <link type="text/css" rel="stylesheet" href="css/style.css">
 <script type="text/javascript" src="js/script.js"></script>
</head>

<body>
 <div id="title" class="title">开始抽奖啦!</div>
 <div class="btns">
  <span id="play">开 始</span>
  <span id="stop">停 止</span>
 </div>
</body>

</html>

js主要代码片段:

首先,定义data数组,写入各奖品名称。并初始化timer定时器,和键盘事件状态flag(一开始状态为0,按下键盘变成1,再按键盘变成0,如此切换).

var data=['Phone7','Ipad','三星笔记本','佳能相机','惠普打印机','谢谢参与','100元充值卡','1000元超市购物券'];
 timer = null,
 flag = 0;

定义开始抽奖函数playFun();

function playFun() {
 var title = document.getElementById('title');
 var play = document.getElementById('play');
 //每次都先清除上一次的定时器任务,避免抽奖效果累加频率会越来越快
 clearInterval(timer);
 //定时器50毫秒触发一次
 timer = setInterval(function(){
  //获取奖品下标随机数
  var random = Math.floor(Math.random() * data.length);
  //显示随机的奖品名称
  title.innerHTML = data[random];
 }, 50);
 //改变将开始按钮背景色
 play.style.background = '#666';
}

定义停止抽奖函数stopFun();

function stopFun(){
 //清除定时器即可结束抽奖
 clearInterval(timer);
 var play = document.getElementById('play');
 //改变将停止按钮背景色
 play.style.background = '#036';
}

按回车键切换抽奖状态事件;

document.onkeyup = function(event){
 event = event || window.event;
 //回车键键码为13
 if (event.keyCode == 13) {
  //如果状态flag值为0则开始抽奖,并把状态值改为1,否则停止抽奖并把状态值改为0
  if (flag == 0){
   playFun();
   flag = 1;
  }else{
   stopFun();
   flag = 0;
  }
 }
}

js完整代码:

var data = ['Phone7', 'Ipad', '三星笔记本', '佳能相机', '惠普打印机', '谢谢参与', '100元充值卡', '1000元超市购物券'],
 timer = null, //定时器
 flag = 0; //用于键盘事件状态标记

window.onload = function() {

 var play = document.getElementById('play'),
  stop = document.getElementById('stop');

 // 开始抽奖
 play.onclick = playFun;
 stop.onclick = stopFun;

 // 键盘事件
 document.onkeyup = function(event) {
  event = event || window.event;
  if (event.keyCode == 13) {
   if (flag == 0) {
    playFun();
    flag = 1;
   } else {
    stopFun();
    flag = 0;
   }
  }
 }
}
// 开始抽奖
function playFun() {
 var title = document.getElementById('title');
 var play = document.getElementById('play');
 //每次都先清除上一次的定时器任务,避免抽奖效果累加频率会越来越快
 clearInterval(timer);
 timer = setInterval(function() {
  var random = Math.floor(Math.random() * data.length);
  title.innerHTML = data[random];
 }, 50);
 play.style.background = '#999';
}
//停止抽奖
function stopFun() {
 clearInterval(timer);
 var play = document.getElementById('play');
 play.style.background = '#036';
}

css样式:

* {
 margin: 0;
 padding: 0;
}

.title {
 font-size: 24px;
 font-weight: bold;
 width: 400px;
 height: 70px;
 margin: 0 auto;
 padding-top: 30px;
 text-align: center;
 color: #f00;
}

.btns {
 width: 190px;
 height: 30px;
 margin: 0 auto;
}

.btns span {
 font-family: '微软雅黑';
 font-size: 14px;
 line-height: 27px;
 display: block;
 float: left;
 width: 80px;
 height: 27px;
 margin-right: 10px;
 cursor: pointer;
 text-align: center;
 color: #fff;
 border: 1px solid #eee;
 border-radius: 7px;
 background: #036;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS宝典学习笔记(下)
Jan 10 Javascript
js读取被点击次数的简单实例(从数据库中读取)
Mar 07 Javascript
javascript常见用法总结
May 22 Javascript
jQuery简单实现上下,左右滑动的方法
Jun 01 Javascript
JS验证图片格式和大小并预览的简单实例
Oct 11 Javascript
微信小程序 网络API 上传、下载详解
Nov 09 Javascript
Bootstrap CSS使用方法
Dec 23 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
Apr 09 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 Javascript
Vue使用screenfull实现全屏效果
Sep 17 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 #Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 #Javascript
Parcel 打包示例(React HelloWorld)
Jan 16 #Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 #Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 #Javascript
动态加载权限管理模块中的Vue组件
Jan 16 #Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 #Javascript
You might like
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
js select option对象小结
2013/12/20 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
Django框架中方法的访问和查找
2015/07/15 Python
Python list操作用法总结
2015/11/10 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
Python连接mysql方法及常用参数
2020/09/01 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
个人收入证明范本
2014/01/12 职场文书
留学生求职信
2014/06/03 职场文书
家长会欢迎词
2015/01/23 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
Python 发送SMTP邮件的简单教程
2021/06/24 Python
简单谈谈Python面向对象的相关知识
2021/06/28 Python
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers