基于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 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
js中取得变量绝对值的方法
Jan 03 Javascript
javascript事件冒泡和事件捕获详解
May 26 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
Feb 22 Javascript
轻松掌握JavaScript单例模式
Aug 25 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
jQuery将表单序列化成一个Object对象的实例
Nov 29 Javascript
JavaScript的继承实现小结
May 07 Javascript
解决npm管理员身份install时出现权限的问题
Mar 16 Javascript
Webstorm2016使用技巧(SVN插件使用)
Oct 29 Javascript
JS快速实现简单计算器
Apr 08 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保存任意网络图片到服务器的方法
2015/04/14 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
在Django的视图中使用form对象的方法
2015/07/18 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
冬季安全检查方案
2014/05/23 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技