莫飞侠 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); 
      } 
    };
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?