shenyamu
莫飞侠
采纳率14.3%
2019-07-26 10:22

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

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • u013254183 老铁咖啡 2年前

    做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); 
      } 
    };
    
    
    点赞 评论 复制链接分享