JS实现一个简单的抽奖系统
本文主要介绍如何通过js中的setInterval()函数实现一个抽奖系统。在该系统中,我们不只是可以通过点击按钮来进行操作,还可以通过敲击键盘来进行操作。这里主要涉及到js中的事件处理程序,用到了onkeyup()函数来进行键盘事件的触发。下面介绍一下主要的实现过程。
1.首先,我们需要建立一个html文件,在该文件中,我们主要写入抽奖区域和两个按钮(一个开始按钮,一个结束按钮)。其中使用到了bootstrap中的buttons插件,美化按钮效果。代码如下:
keyEvent.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>抽奖系统</title><link href="http://cdn.bootcss.com/bootstrap/4.0.0-alpha.2/css/bootstrap.css" rel="stylesheet"><link href="http://cdn.bootcss.com/Buttons/2.0.0/css/buttons.min.css" rel="stylesheet"><link rel="stylesheet" href="keyEvent.css"><script src="http://cdn.bootcss.com/jquery/3.0.0-rc1/jquery.min.js"></script><script src="http://cdn.bootcss.com/Buttons/2.0.0/js/buttons.min.js"></script><script src="keyEvent.js"></script>
</head>
<body> <div id="title" class="title">开始抽奖啦</div><div class="btns"><button class="button button-raised button-primary button-pill" id="play">开始</button><button class="button button-raised button-primary button-pill" id="stop">停止</button></div>
</body>
</html>
2.加入了keyEvent.css文件来修饰页面及按钮样式,代码如下:
keyEvent.css
*{margin: 0;padding: 0;
}
.title{width: 400px;height: 100px;line-height: 100px;text-align: center;margin: 0 auto;font-size: 24px;font-weight: bold;color:red;
}
.btns{width: 400px;height: 100px;margin: 0 auto;text-align: center;
}
3.下面就是最重要的js文件了。在这个文件中,我们将奖项初始化在一个名为data的数组里面,然后初始化一个计时器,并且初始化一个标识符flag,其初始值为0,主要用来判断用户第一次按下空格键时为开始操作,再按一次为结束操作,以此循环,因此flag只有0和1两个值,代表着两种状态。当点击开始按钮后,我们需将开始按钮设置为禁用状态,这里主要通过play.disabled=true;这条语句进行实现。其代码如下所示:
keyEvent.js:
var data=['iphone6','iphone 6s','单反相机','ipad','mac book','三星手机','小米手机','魅族手机','谢谢参与'];
var timer=null;
var flag=0;
window.onload=function(){var title=document.getElementById('title');var play=document.getElementById('play');var stop=document.getElementById('stop');// 点击开始按钮时,调用playFun函数play.onclick=playFun;// 结束stop.onclick=stopFun;// 键盘事件document.onkeyup=function(event){//打印出键盘的键值console.log(event.keyCode);//通过上一句可以知道,空格键的键值为32if(event.keyCode==32){if(flag==0){playFun();flag=1;}else{stopFun();flag=0;}}}
}//开始抽奖
function playFun(){clearInterval(timer);timer=setInterval(function(){var random=Math.floor(Math.random()*data.length);console.log(data[random]);title.innerHTML=data[random];},50);play.disabled=true;
}//结束抽奖
function stopFun(){clearInterval(timer);play.disabled=false;
}
4.最终实现效果如图所示:
JS实现一个简单的抽奖系统相关推荐
- 原生js完成一个简单的抽奖功能
文章目录 前言 实现过程 1.前期准备 2.CSS美化 3.使用 js 完成抽奖功能 3.1 随机数模块 3.2 随机奖品 3.3 开始抽奖 3.4 点击开始抽奖 完整代码 HTML部分 CSS部分 ...
- 实现一个简单的抽奖系统
文章目录 前言 一.先定义一个div. 二.JavaScript内容 1.先准备需要抽奖的人(数据),定义一个方法 2.实现滚动的特效 总结 前言 利用html,css,JavaScript来实现一个 ...
- JS实现一个简单的抽奖页面
一开始的抽奖界面是这样的: 按下键盘然后松开就是这样: 代码如下: <!DOCTYPE html> <html lang="en"><head> ...
- 一个简单的blog系统(九) 增加标签和标签页面
一个简单的blog系统(九) 增加标签和标签页面 1.现在,我们来给博客添加标签和标签页面. 假定每篇文章最多只有两个标签,当单机主页左侧标签页链接的时候,跳转到标签页并且列出所有已经有的标签,当单击 ...
- 一个简单的blog系统(十一) 增加文章检索功能
一个简单的blog系统(十一) 增加文章检索功能 1. 现在,我们就来给博客添加文章检索功能.假定,可以根据关键字魔木查询文章标题,也就是说支持正则表达式,而且字母不会区分大小写. 1.1 首先,我们 ...
- 一个简单的blog系统(四) 实现用户页面和文章页面
一个简单的blog系统(四) 实现用户页面和文章页面 1.现在我们来给博客添加用户页面和文章页面. 1.1 所谓用户页面就是当单击某个用户名链接时,跳转到:域名/u/用户名,并且跳出该用户的所有文章. ...
- 一个简单的blog系统(十二) 增加友情链接页面
一个简单的blog系统(十二) 增加友情链接页面 1.首先,我们打开header.ejs,在其中添加一行代码,并作出响应修改: <li><a href="/links&qu ...
- Node.js搭建一个简单的服务器
文章目录 Node.js的安装 了解Node.js模块系统 服务器的搭建 一.创建一个Web服务器 注意 程序代码 运行 二.静态资源托管 静态资源 注意 程序代码 运行 三.简单接口的实现(简单服务 ...
- JS实现一个简单的计算器
使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除.效果如上: 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择 ...
最新文章
- graphviz绘制决策树
- 院士张钹:AI奇迹短期难再现 深度学习技术潜力已近天花板
- mysql 实验论证 innodb表级锁与行级锁
- SpringCloud工作笔记053---SLF4J简介与使用(整合log4j_并切换logging)
- Maven 中 plugins 和 pluginManagement的区别
- 小米武大共建人工智能实验室,先期提供1000万研发经费
- 平衡查找树C语言程序,C语言数据结构之平衡二叉树(AVL树)实现方法示例
- java图形用户界面实验_java图形用户界面实验教程
- C4D插件:阿诺德Arnold渲染器 (R20-26版本合集)
- html4.0打不开.swf,SecurityError Error 2148 SWF 不能访问本地资源
- 【目标跟踪】基于贝叶斯网络实现目标滤波跟踪附matlab代码
- FMCW雷达多运动目标检测
- 品读余光中的诗--《在雨中等你》
- NMI(Normalized Mutual Information)
- 【数据结构进阶】二叉平衡树
- 从晶体管开始聊聊计算机为什么采用二进制
- 【人工智能项目】深度学习实现白葡萄酒品质预测
- python作业爬取xxx大学排行
- Java项目:教师资格证报名系统(java+SpringBoot+vue+maven+mysql+elementui)
- LAB4 PartA 多处理器支持和协作多任务处理
热门文章
- 07-行高(line-height)
- illustrate插件-AI插件开发-创意插件-Astute Graphics-路径控制调整功能-圆角-铅笔路径-动态路径
- cesium 生成抛物线 流动线
- 第八章 解释SQL查询计划(一)
- 傻瓜式php环境套装,BitNami 傻瓜式开源软件安装套件
- 一个ip 不同端口如何对应不同域名
- 一阶系统开环传递函数表达式_自动控制原理要点---第六章 系统校正
- 服务端渲染(SSR) 和客户端渲染(CSR)
- 采用TI多标准基站 SoC 实现性能、效率与差异化的全面提升
- kali系统搭建本地服务器,kali linux 下搭建git服务器