js实现简易的抽奖系统

本文介绍了一个基于HTML、CSS和JavaScript的简易抽奖系统实现过程。该系统可在点击开始后从90个号码中随机抽取幸运号码,三次抽奖机会用尽后按钮将显示次数已用完并失效。抽奖号码由JS生成,代码简洁,适用于小型活动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现效果如下:
实现效果
效果说明:
1、共有90个号码,在点击开始抽奖后,产生随机号码;
2、点击停止后,显示最后一次产生的随机号码,作为幸运号码;
3、在点击三次抽奖后,按钮内容显示为:次数已经用完,再点击时失效;
4、效果图中号码为使用js生成的。
由于涉及的代码量不多,故全部在index.html中,具体代码如下:
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>抽奖系统的实现</title>
</head>
<style>
    * {
        padding: 0;
        margin: 0;
    }

    li {
        list-style: none;
    }

    #box {
        position: relative;
        margin: 50px auto;
        width: 600px;
        height: 540px;
        border: 1px solid #f46e00;
    }

    #show {
        float: left;
        width: 600px;
        height: 460px;
        background: #cccccc;
    }

    #start {
        float: left;
        width: 100px;
        height: 40px;
        color: #ededed;
        user-select: none;
        line-height: 40px;
        text-align: center;
        margin-left: 250px;
        margin-top: 20px;
    }

    .start {
        background: #8a6de9;
    }

    .list {
        float: left;
        width: 60px;
        height: 51px;
        font-size: 24px;
        border-radius: 60px;
        line-height: 50px;
        background: #8a6de9;
        text-align: center;
        color: #e8e8e8;
    }

    .stop {
        background: #888888;
    }

    .select {
        color: #8a6de9;
        background: #e8e8e8;
    }

    .lucky {
        display: none;
        position: absolute;
        left: 0;
        top: 0;
        width: 600px;
        height: 460px;
        line-height: 460px;
        text-align: center;
        font-size: 56px;
        color: #0f0;
        background: rgba(0, 0, 0, .7);
    }
</style>

<body>

<div id="box">
    <div id="show"></div>
    <p id="start" class="start">开始抽奖</p>
    <div class="lucky"></div>
</div>

<script>
    let show = document.getElementById('show');
    let start = document.getElementById('start');
    let lists = document.getElementsByClassName('list');
    let lucky = document.getElementsByClassName('lucky')[0];
    let src = '';
    let num = 0;
    let clickNum = 0;
    let interval = 0;

    for (let i = 1; i <= 90; i++) {
        if (i < 10) {
            i = '0' + i;
        }
        src = src + '<li class="list">' + i + '</li>';
    }
    show.innerHTML = src;

    start.onclick = function () {

        if (clickNum < 3) {
            if (start.innerText === '停止') {
                start.innerText = '再来一次';
                clearInterval(interval);
                start.setAttribute('class', 'start');
                if (num < 10) {
                    num = '0' + num;
                }
                lucky.style.display = 'block';
                lucky.innerText = "您的中奖号码为:" + num;
            } else {
                clickNum++;
                interval = 0;
                clearInterval(interval);
                lucky.style.display = 'none';
                start.innerText = '停止';
                start.setAttribute('class', 'stop');
                interval = setInterval(function () {
                    num = Math.round(Math.random() * 90);
                    for (let i = 0; i < lists.length; i++) {
                        lists[i].setAttribute('class', 'list');
                        if (num - 1 === i) {
                            lists[i].setAttribute('class', 'select list');
                        }
                    }
                }, 10)
            }
        } else {
            start.innerText = '次数已用完';
            start.style.background = 'rgba(0,0,0,0.7)';
            start.style.color = '#fff137';
            clearInterval(interval);
            lucky.style.display = 'block';
            lucky.innerText = "您的中奖号码为:" + num;
        }

    }

</script>

</body>
</html>

至此,简易的抽奖系统就已经实现完毕。

纯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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值