JavaScript抽獎效果詳解

admin發表於2018-09-18

關於更多的抽獎特效可以參閱抽獎特效分割槽。

下面分享一段簡單的抽獎效果程式碼,並詳細介紹一下它的實現過程。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
*{
  margin:0;
  padding:0;
}
 
.title{
  width:400px;
  height:70px;
  margin:0 auto;
  padding-top:30px;
  text-align:center;
  font-size:24px;
  font-weight:bold;
  color:#F00;
}
 
.btns{
  width:190px;
  height:30px;
  margin:0 auto;
}
 
.btns span{
  display:block;
  float:left;
  width:80px;
  height:27px;
  line-height:27px;
  background:#036;
  border:1px solid #eee;
  border-radius:7px;
  margin-right:10px;
  color:#FFF;
  text-align:center;
  font-size:14px;
  font-family:"微軟雅黑";
  cursor:pointer;
}
</style>
<script>
var data=['螞蟻部落一','螞蟻部落二','www.softwhy.com','js教程','css教程','div教程','jquery教程'],
    timer=null;
 
window.onload=function(){
  var Title=document.getElementById('title'),
      Play=document.getElementById('play'),
      Stop=document.getElementById('stop'),
      flag=0;
 
  Play.onclick=playfun; //開始
  Stop.onclick=stopfun; //停止
 
  // 按鍵開始
  document.onkeyup=function(event){
    event=event || window.event;
    if(event.keyCode==13){
      if(flag==0){
        playfun();
        flag=1;
      }else{
        stopfun();
        flag=0;
      }
    }
  }
}
 
function playfun(){
  var Title=document.getElementById('title'),
      Play=document.getElementById('play');
  clearInterval(timer);
  timer=setInterval(function(){
      var random=Math.floor(Math.random()*data.length);
      Title.innerHTML=data[random];
  },50)
  Play.style.background='#999';
}
 
function stopfun(){
  var Play=document.getElementById('play');
  clearInterval(timer);
  Play.style.background='#036';
}
</script>
</head>
 <body>
    <div id="title" class="title">開始抽獎</div>
    <div class="btns">
       <span id="play">開 始</span>
       <span id="stop">停 止</span>
    </div>
 </body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).data=['螞蟻部落一','螞蟻部落二','www.softwhy.com','js教程','css教程','div教程','jquery教程'],儲存獎品的陣列。

(2).timer=null,用來儲存定時器函式的標識。

(3).window.onload=function(){}每當文件內容完全載入完畢再去執行函式中的程式碼。

(4).Title=document.getElementById('title'),獲取指定id的元素物件。

(5). Play.onclick=playfun,點選可以開始抽獎。(6).Stop.onclick=stopfun,點選停止抽獎。

(7).document.onkeyup=function(event){},註冊onkeyup事件處理函式。

(8).event=event || window.event,相容時間物件。

(9).if(event.keyCode==13){

  if(flag==0){

    playfun();

    flag=1;

  }else{

    stopfun();

    flag=0;

  }

},如果是點選的Enter鍵,那麼點選回車可以實現開始和停止的切換。

flag是一個標識,用來標識當前是抽獎狀態還是停止狀態。

(10).function playfun(){},實現了抽獎效果。

(11).Title=document.getElementById('title')獲取指定的元素物件。

(12).clearInterval(timer),停止上一次抽獎,防止疊加現象。

(13).timer=setInterval(function(){

  var random=Math.floor(Math.random()*data.length);

  Title.innerHTML=data[random];

},50),從陣列中隨機抽取獎品,然後寫入指定元素。

(14).設定開始按鈕背景顏色。

(15).function stopfun(){

  var Play=document.getElementById('play');

  clearInterval(timer);

  Play.style.background='#036';

},停止抽獎效果。

二.相關閱讀:

(1).document.getElementById()參閱document.getElementById()一章節。

(2).onkeyup事件參閱javascript keyup事件一章節。

(3).keyCode參閱javascript event.keyCode一章節。

(4).clearInterval()參閱clearInterval()一章節。

(5).setInterval()參閱setInterval()一章節。

(6).Math.floor()參閱javascript Math.floor()一章節。

(7).Math.random()參閱javascript Math.random()一章節。

(8).innerHTML參閱innerHTML一章節。

相關文章