基于JavaScript实现简单抽奖功能代码实例

作者:函数茶馆时间:2026-10-23 22:48:34浏览:293

本文介绍如何使用JavaScript实现一个简单的网页抽奖功能。通过随机滚动显示抽取结果,点击按钮即可触发抽签逻辑。代码包含HTML结构、CSS样式及JS核心逻辑,支持自定义抽取内容列表,适合前端初学者参考学习。

抽奖功能实现概述

制作这个功能的初衷纯粹出于兴趣与娱乐。

灵感来源于此前班会课上的场景:当老师提问时,现场无人应答。

当时便设想,若通过抽签机制选中某人,对方是否仍会拒绝回答?当然,这仅是玩笑之语。

页面效果与交互说明

首先展示页面的最终视觉效果。

抽奖功能实现概述

点击抽取按钮即可开始抽签,红色边框区域用于显示抽取结果(注:红色边框仅为示意,实际界面中并不存在)。

抽取过程的动态效果如下:文字会进行随机滚动,最终停止在某个结果上。

抽奖功能实现概述

抽取列表中的具体内容可以根据实际需求进行替换和修改。

核心代码实现与注意事项

以下是完整的实现代码。


<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    *{margin: 0px;padding: 0px;}
    li{list-style: none;}
    body{
      font-family: "楷体";
      user-select:none;
      background: url('1.jpg') no-repeat;
      background-size: 100%;
      /*background-color: red;*/
    }
    .section{
      position: relative;
      width:935px;
      height: 460px;
      background-color: rgba(0,0,0,.3);
      margin:165px auto 0;
      text-align: center;
    }
    .section h2{
      height: 90px;
      line-height: 90px;
      font-size: 40px;
      color:#fff;
    }
    .section .s-result{
      height: 400px;
      color: #fff;
    }
    .s-result .number{
      float: left;
      width: 895px;
      height: 300px;
      line-height: 300px;
      margin-left: 20px;
      font-size: 60px;
      font-weight: bold;
    }
    .btn{
      position:absolute;
      left: 50%;
      margin-left: -161px;
      bottom: -40px;
      width: 323px;
      height: 81px;
      border-radius: 30px;
      background-color: #000;
      cursor:pointer;
    }
    .btn p{
      line-height: 81px;
      font-size: 50px;
      color: #fff;
    }
  </style>
</head>
<body>
  <div class="section">
    <h2>看看谁最幸运!!</h2>
    <div class="s-result">
    </div>
    <div class="btn">
      <p>点 击 抽 取</p>
    </div>
  </div>
  <script>
    var oBtn = document.getElementsByClassName('btn')[0];
    var oResult = document.getElementsByClassName('s-result')[0];
    var arrName = ['张三','李四','王五','赵六','李xx','杨xx','张xx','A_dmin'];     //抽签的内容
    var step = 1;
    var cnt = 1;
    var flag = true;
    oBtn.onclick = function (){
      if(flag){
        step = 1;
        creatName();
        flag = false;
      }else{
        var d = document.getElementsByClassName('number')[0];
        oResult.removeChild(d);
        step = 1;
        creatName();
      }
    }
    function getName(){
      var num = Math.floor(Math.random()*(arrName.length-1));
      var n = arrName[num];
      arrName.splice(num,1);
      return n;
    }
    function creatName(){
      if(step > cnt){
        return null;
      }
      step++;
      
      var oDiv = document.createElement('div');
      oDiv.className = 'number';
      
      oResult.appendChild(oDiv);
      
      var dis = 1;
      var maxDis = 30;
      var mySet = setInterval(function(){
        dis++;
        if(dis > maxDis){
          oDiv.innerHTML = getName();
          clearInterval(mySet);
          creatName();
          return null;
        }
        oDiv.innerHTML = arrName[Math.floor(Math.random()*(arrName.length-1))];
      },50);
    }
  </script>
</body>
</html>

注意事项:

该实现存在一个小瑕疵:允许用户多次点击,每次随机生成的结果均不相同。因此,当抽取内容列表为空时,页面会显示“undefined”,但这并不影响整体使用体验。

以上就是本文的全部内容,希望能为各位的学习提供些许帮助,同时也欢迎大家继续支持本站。

作者最新文章