莫飞侠 2019-07-26 10:22 采纳率: 0%
浏览 404
已采纳

需要一个web端抽奖选人的程序,有特定的要求?

需要一个方便的抽奖选人的程序,弄成web端或者桌面端都可以,界面可以稍微美化一下。
总抽奖人员大概一百人,这边有名字数据可以导入,对web开发不熟,最好帮忙把代码写出来,要求如下:
1. 前面13次抽奖要选中固定的13个人,每次就从13人中随机抽取一人,不能重复,
1. 第14次抽奖就从剩余87人随机抽取;
1. 点击按钮开始抽奖时,web上需要显示名字滚动的信息,然后按结束时才显示中奖人;

  • 写回答

1条回答 默认 最新

  • 珍妮玛•黛金 博客专家认证 2019-07-26 10:36
    关注

    做2个抽奖池呗,13个固定的作为1个奖池,剩下的87作为第2个奖池,看你一共抽多少次,

    //html
    <button type="button" onclick="beginDraw();">开始抽奖</button>
    <div id="rollDiv" style="display:none;">当前滚动抽奖人员:<span id="rollPerson"></span></div>
    <br>
    <span id="drawnPerson"></span>
    
    //js
    var person_13 = ['asd','sdf','fgh','ghj','hjk','ujk','vbf','bngh','dhc','ndxc','nfg','cng','sdetg'];
    var person_left = ['aaa','www','sss','qqq','fff','ggg'];
    var index = 0;
    var intrtval = null;
    var drawTime = 3000;//3秒钟抽奖结束
    var rollTime = 50;//滚动的频率50毫秒
    function beginDraw(){
      var person = '';
      document.getElementById("rollDiv").style.display = "block";
      rollPerson(person_13,person_left,drawTime);
      setTimeout(function(){
        if(index >= 19){
          document.getElementById("drawnPerson").innerHTML = '抽奖已结束';
          return;
        }
        if(index >= 13){
          person = person_left[Math.floor((Math.random()*person_left.length))];
          person_left.remove(person);
        }else{
          person = person_13[Math.floor((Math.random()*person_13.length))];
          person_13.remove(person);
    
        }
        index ++;
        document.getElementById("drawnPerson").innerHTML = '第' + index + '次抽奖中奖人是:' + person;
      }, drawTime )
    
    
    }
    
    function rollPerson(arr1,arr2,drawTime){
      var person_all = arr1.concat(arr2)
      var total_time = 0;
      intrtval = window.setInterval(function(){
            console.log(person_all.length);
          if(total_time >= drawTime){
            document.getElementById("rollDiv").style.display = "none";
            window.clearInterval(intrtval)
            return;
          }else{
            document.getElementById("rollPerson").innerHTML = person_all[Math.floor((Math.random()*person_all.length))];
          }
        total_time = total_time + rollTime;
      },rollTime)
    }
    
    Array.prototype.remove = function(val) { 
      var index = this.indexOf(val); 
      if (index > -1) { 
        this.splice(index, 1); 
      } 
    };
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?