js不重複抽獎效果程式碼例項
本章節詳細分析一段程式碼例項,它實現了簡單的隨機抽獎效果,也可以稱之為隨機點名效果。
此效果的一個很重要的特點就是具有隨機性,並且不能出現重複現象。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> #box{ text-align:center; margin-top:100px; width:100%; } #show{ margin:auto; font-size:50px; width:300px; height:50px; background:#FFEEFF; } </style> <script type="text/javascript"> var isRun=true; var arr=["張三","李四","王五","趙六","螞蟻部落","antzone","softwhy.com"]; var old=[]; function action(){ var btValue=document.getElementById("bt").value; if(btValue=="開始"){ isRun=true; run(); document.getElementById("bt").value="結束"; } else{ isRun=false; document.getElementById("bt").value="開始"; } } function run(){ var index=Math.floor(Math.random() * arr.length); document.getElementById("show").innerHTML=arr[index]; if(isRun==false){ var b =true; for(var j in old){ if(old[j]==index){ b=false; } } if(b){ old[old.length]=index; return; } } setTimeout("run()",10); } window.onload=function(){ var obt=document.getElementById("bt"); obt.onclick=function(){ action() } } </script> </head> <body> <div id="box" style=""> <div id="show"></div> <div style="margin-top:20px;"> <input id="bt" type="button" value="開始"/> </div> </div> </body> </html>
上面的程式碼實現了我們的要求,點選按鈕可以實現無重複抽獎效果,下面詳細介紹一下它的實現過程。
一.程式碼註釋:
1.var isRun=true,宣告一個變數並賦初值為true,用來標識是否在抽獎過程中。
2.var arr=["張三","李四","王五","趙六","螞蟻部落","antzone","softwhy.com"],此陣列中存放的是抽獎的名額。
3.var old=[],此陣列用來存放已經被抽到的名額在原來陣列中的索引位置。
4.function action(str){},此函式完成了對一些標識的變換和按鈕value值的變換效果。
5.var btValue=document.getElementById("bt").value,獲取按鈕的value屬性值。
6.if(btValue=="開始"){
isRun=true;
run();
document.getElementById("bt").value="結束";
}判斷按鈕當前的value屬性值是否是"開始",如果是,說明使用者已經點選按鈕開始進行抽獎,並且將isRun標識設定為true,然後執行run()函式,後面會介紹詞函式的作用,並將按鈕的value屬性值修改為"結束"。
7.else{
isRun=false;
document.getElementById("bt").value="開始";
}按鈕的value值不是"開始",說明使用者已經點選按鈕停止抽獎,比那個將isRun標識設定為false,並將按鈕的value值改為"開始"。
8.function run(){},此函式實現了抽獎效果。
9.var index=Math.floor(Math.random() * arr.length),隨機獲取陣列的索引值。
10.document.getElementById("show").innerHTML=arr[index],在元素中顯示隨機名額,之所以會出現不簡單更換的效果,是因為在函式尾部使用setTimeout("run()",10)對run函式進行遞迴呼叫。
11.if(isRun==false),判斷是否已經點選按鈕停止抽獎。
12.var b =true,宣告一個變數並賦初值為true,用來標識抽獎的名額是否已經之前被抽取過。
13.for(var j in old){
if(old[j]==index){
b=false;
}
}遍歷old陣列,檢視是否被抽取過,也就是當前的名額陣列的索引值是否在old陣列中出現,如果出現則將b設定為false。
14.if(b){
old[old.length]=index;
return;
}如果不存在,那麼就為old陣列新增一個新的陣列元素,陣列元素之就是抽取名額的索引,然後跳出函式。
15.setTimeout("run()",10),遞迴執行run函式,它實現了點選開始後的不簡單輪播效果。
二.相關閱讀:
1.Math.floor()方法可以參閱javascript Math.floor()一章節。
2.Math.random()方法可以參閱js Math.random()一章節。
3.innerHTML屬性可以參閱js innerHTML一章節。
4.setTimeout()可以參閱setTimeout()一章節。
相關文章
- js實現刮刮樂抽獎效果程式碼例項JS
- jQuery九宮格抽獎效果程式碼例項jQuery
- js生成不重複數字陣列程式碼例項JS陣列
- js獲取指定位數不重複隨機數程式碼例項JS隨機
- javascript生成不重複隨機數程式碼例項JavaScript隨機
- js隨機取出陣列中不重複值元素程式碼和例項JS隨機陣列
- js重力球效果程式碼例項JS
- js煙花效果程式碼例項JS
- js鐘錶效果程式碼例項JS
- js秒錶效果程式碼例項JS
- 微信小程式翻牌抽獎效果微信小程式
- js淡入淡出效果例項程式碼JS
- js元素上下移動效果程式碼例項JS
- js table隔行變色效果程式碼例項JS
- js簡單日曆效果程式碼例項JS
- js小球拋物線效果程式碼例項JS
- js簡單摺紙效果程式碼例項JS
- js圖片碎片化效果程式碼例項JS
- js元素的震動效果程式碼例項JS
- js左右滑動選項卡效果程式碼例項JS
- javascript獲取字串中第一個不重複字元程式碼例項JavaScript字串字元
- js抽獎JS
- js實現的垂直選項卡效果程式碼例項JS
- js圖片淡入淡出效果程式碼例項JS
- JavaScript抽獎效果詳解JavaScript
- js實現的留言本效果程式碼例項JS
- js實現的div拖動效果例項程式碼JS
- js模擬實現多型效果程式碼例項JS多型
- js實現的元素抖動效果程式碼例項JS
- jQuery 動畫效果程式碼例項jQuery動畫
- css切角效果程式碼例項CSS
- css模糊效果程式碼例項CSS
- canvas火焰效果程式碼例項Canvas
- js刪除陣列中重複項的程式碼例項JS陣列
- js 的陣列去除重複元素程式碼例項JS陣列
- js刪除陣列重複元素程式碼例項JS陣列
- jquery 驗證碼效果程式碼例項jQuery
- js點選div實現閃爍效果程式碼例項JS