原生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;
}

纯html+JS完成的抽奖系统,友通数码港实力派团队开发。 1、号码抽取等级、数量可以自由定义前端定义,不用手工修改任何代码 3、背景、主题和样式可根据会场需要自由更换修改 2、全屏幕显示1024X768像素,界面美观大方,适合于投影仪投射晚会晚宴豪华场所抽奖系统。 3、可自由选择键盘及鼠标双重操作方式,其它无用键自动屏蔽。 4、环境要求低,只需要IE浏览器即可完成所有执行和配置工作。 5、未到场人员可以双击数字单独重新抽取。 6、开完配置一次抽一组或者抽一个。 7、自定义配置可以根据需要保存为配置文件。 8、抽奖完成后可以选择保存结果以便日后统计分析。 V1.0 增加了键鼠屏蔽参数 ----------------------------------------------- V1.1 2010-12-28 增加了 是否可以重复抽取配置选项 ----------------------------------------------- V1.2 2011-01-05 增加了 每组是否逐个抽取配置选项 2011-01-05 对逐个抽取的号码显示做了美化 ----------------------------------------------- V1.2.1 2011-01-08 修复了window.obo = 1;时出现重复数字的错误,V1.1之前版本无此错误 ~感谢石路街道的领导提醒:) 2011-01-08 增加了可选滚动姓名的功能 配置 m_name=[]; 即可 2011-01-08 增加双击数字单独重抽时的提示选项“此号码在以后的环节是否还有机会抽到!” 2011-01-08 修改了结果显示部分的错位样式 2011-01-08 修复了组抽号码重复错误问题 ----------------------------------------------- V1.2.2 2011-01-14 兼容了火狐浏览器,但本人建议仍然用IE,要用火狐只有按F11手动全屏了 2011-01-14 部分键 F5、退格、Ctrl+R、Ctrl+N、Shift+F10、Alt+F4 被屏蔽,避免一些意外发生 2011-01-14 优化了一些繁琐的结构,效率有所提升! 2011-01-16 去掉了配置参数 r、r_name,奖项配置变为window.ini,使配合样式表更加灵活 ----------------------------------------------- V1.2.2 2011-02-10 在配置文件增加了速度控制变量,以便于在不同机器环境做速度微调 ----------------------------------------------- V1.2.3 * 2011-08-08 本版本为政府单位定制版本不对外开放 ----------------------------------------------- V2.0 2011-09-13 突破性的解决了手工修改代码烦恼增加了图形化界面 2011-09-13 可以通过图形化设置界面保存配置文件(只在IE下有效) 2011-09-13 配置文件从HTML内提取出来,变为ini.js 2011-09-13 图形化配置界面做了一些兼容性优化 2011-09-13 奖项框除了可以填样式名还可以直接填样式代码,程序可以自动识别 2011-09-13 增加了手动和自动整理列表功能 ----------------------------------------------- V2.0.1 2011-12-09 bug处理:列表获取处理错误,已修正! 使用请看压缩包内说明,用过了别忘了给好评,欢迎光临苏州友通数码港!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇见小美好

每一笔打赏都见证了你的努力💪

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值