* 당첨번호 / 총번호 : 랜덤으로 뽑기 (중복제거)*

* 결과값인 배열을 하나씩 시간지연 출력 *

 

<!DOCTYPE html>
<html>
 <head>
  <title>번호추첨</title>
  <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
  <meta content="utf-8" http-equiv="encoding">
  <script type="text/javascript" src="/scripts/jquery-1.10.2.min.js"></script>
  <link type="text/css" href="/css/design.css" rel="stylesheet" />
<style type="text/css">
body
{
 background-image:url('/images/bglotto.jpg');
 background-repeat:no-repeat;
 background-attachment:fixed;
}
</style>  
  
<script type="text/javascript">

 

/* 배열에 랜덤값 얻기 */

 function shuffleRandom(){
      $("#resultBox").empty();
      $("#resultBox2").empty();
      $("#resultBox3").empty();
 
 // 결과 담을 배열

 var resultArray = [];  
 var n = $("#resultMax").val();  // 당첨자수
    var total = $("#total").val();   // 총인원
    var temp;          // 난수 임시로 담을 변수
    var dupCheckFlag = 0;     // 중복체크 Flag (0,1)

 

  for(var i = 0; i < n ; i++){    // 필요한 당첨자수 많큼 루프
 
  temp = Math.floor(Math.random() * total) + 1;  // 난수 생성 (+1 은 0 제외)

     for(var y = 0; y < i ; y++){      //  기존 배열 값들 0 부터 i 번째(현재) 전까지
      if(resultArray[y] == temp){        // 중복체크 _ 같은것이 있다면,
       i = i - 1;           //  현재 배열위치 i 에서 한칸 앞 위치를 가져간다. *( i++ 가 되니 미리 i-1해준다.) 결국은 i값이 증가되지 않는것.
       dupCheckFlag = 1;      //  배열에 값을 넣지 않기 위해 중복체크 플래그 값 설정해주고
      }
     }             

     if(dupCheckFlag == 0){     // 중복된 값이 아니면 난수를 배열 i 번째 넣어주고.
      resultArray[i] = temp;
     } else {
      dupCheckFlag = 0;      // 중복된 값이면 i -1 번째 그대로 간다.
     }
    }
 
  for(var k = 0; k < n ; k++){    // * 화면 출력시 10명씩 한줄에 & setInterval 시간지연 .. 번호 하나씩 출력
       fn_view(resultArray[k], k);    //(결과값, 순서)

  }

} // end of shuffleRandom


function fn_view(p,k){

var x = 1000;        //  setInterval 시간계산용 ms

 

    if(k < 10){        // 첫번째 줄. 1~10개까지
     var varTimer = setInterval(function(){         // ***시간지연 함수
        $("#resultBox").append(p);
       if(k !=9){
        $("#resultBox").append(" , ");
     }
     clearTimeout(varTimer);             // setInterval() 메소드의 작동을 정지하기 위해서 clearInterval() 메소드를 사용한다.
    }, x*k);                    //  ***지연시간 Set ( 1000 *  k 가 순번 증가값이므로 지연시간이 1초씩 늘어난다. )
      } else if(k <20){
     var varTimer = setInterval(function(){
         $("#resultBox2").append(p);
        if(k !=19){
         $("#resultBox2").append(" , ");
      }
      clearTimeout(varTimer);
     },x*k);
     } else{
     var varTimer = setInterval(function(){
        $("#resultBox3").append(p);
        if(k !=29){
       $("#resultBox3").append(" , ");
      }
      clearTimeout(varTimer);
     },x*k);
     }

} //end of fn_view

 

</script>

</head>

<body>
<div style="font-size: 20px">
 <p style="font-size: 40px;margin-left: 100px; margin-top: 50px;color: white">오픈스마트 플랫폼 경품 추첨</p>
<div style="margin-top: 100px">
     <span style="margin-left: 50px;color: white"> 참석자수:</span><input type="text" id="total" />
     <span style="margin-left: 30px;color: white"> 당첨인원:</span><input type="text" id="resultMax"/>
     <input type="button" id="lottoResult" value="추첨하기" style="margin-left: 20px" onclick="shuffleRandom()"/>
</div>
    <div id="resultBox" style="font-size: 30px; margin-left: 50px; margin-top: 60px;color: white"></div>
    <div id="resultBox2" style="font-size: 30px; margin-left: 50px; margin-top: 25px;color: white"></div>
    <div id="resultBox3" style="font-size: 30px; margin-left: 50px; margin-top: 25px;color: white"></div>

</div>
</body>
</html>

 

 

+ Recent posts