您好,登錄后才能下訂單哦!
本文實(shí)例為大家分享了JS實(shí)現(xiàn)抽獎(jiǎng)效果展示的具體代碼,供大家參考,具體內(nèi)容如下
展示:
HTML:
<div id="table"></div> <div id="btn"> <button onclick="start('p', 'active','newactive', 100)">順序抽/停止</button> <button onclick="startRan('p', 'active','newactive', 100)">隨機(jī)抽/停止</button> </div>
CSS:
table { text-align: center; border-collapse: collapse; } table * { width: 60px; height: 60px; } #btn { box-sizing: border-box; width: 190px; display: flex; justify-content: space-between; align-items: center; } #btn * { flex-grow: 1; background-color: red; border: 1px solid #000; color: #fff; height: 30px; font-size: 10px; } .active { background-color: #ccc; } .newactive { background-color: #00ffff; }
JavaScript:
// 定義一個(gè)獎(jiǎng)池 var jackpot = [ ['獎(jiǎng)品A1', '獎(jiǎng)品A2', '獎(jiǎng)品A3'], ['獎(jiǎng)品B1', '獎(jiǎng)品B2', '獎(jiǎng)品B3'], ['獎(jiǎng)品C1', '獎(jiǎng)品C2', '獎(jiǎng)品C3'] ]; /** * [table 創(chuàng)建表格] * @param {[Array]} arr [獎(jiǎng)品數(shù)組] * @param {[String]} selector [選擇器] * @return {[String]} table [返回一個(gè)HTML標(biāo)簽] */ function table(arr, selector) { var table = '<table border="1">'; for (var i = 0; i < arr.length; i++) { table += '<tr>'; for (var j = 0; j < arr[i].length; j++) { table += '<td class="' + selector + '">' + arr[i][j] + '</td>'; } table += '</tr>'; } table += '</table>'; return table; } // 輸出獎(jiǎng)池 document.getElementById('table').innerHTML = table(jackpot, 'p'); var key = true; // start,startRan控制器 var num = 3; // 抽獎(jiǎng)次數(shù) // 抽過(guò)的還能抽 可定義抽獎(jiǎng)次數(shù)-->次數(shù)限制 num需要定義 // 不定義抽獎(jiǎng)次數(shù)-->次數(shù)無(wú)限 num不需定義 // 抽過(guò)的不能抽 可定義抽獎(jiǎng)次數(shù)-->次數(shù)限制(次數(shù)不超過(guò)選擇器長(zhǎng)度) num需要定義 // 不定義抽獎(jiǎng)次數(shù)-->次數(shù)等于選擇器長(zhǎng)度 num需要定義 /** * [start 開(kāi)始抽獎(jiǎng)] * @param {[String]} selector [選擇器] * @param {[String]} addselector [給選中的添加樣式] * @param {[String]} newaddselector [中獎(jiǎng)獎(jiǎng)品樣式] * @param {[Number]} speed [時(shí)間越小,速度越快] * @return {[type]} [description] */ function start(selector, addselector, newaddselector, speed) { if (key) { if (typeof(num) == 'undefined' || num != 0) { var count = 0; // 如果寫(xiě)成var timer會(huì)每次執(zhí)行時(shí)重新定義一個(gè)timer,那么clearInterval(timer)只能清除后面定義的那個(gè)timer,前面定義的已經(jīng)沒(méi)有變量指向了 無(wú)法清除 timer = setInterval(function() { if (count < $('.' + selector).length) { $('.' + selector).eq(count).addClass(addselector); $('.' + selector).eq(count).siblings().removeClass(addselector); $('.' + selector).eq(count).parent().siblings().children().removeClass(addselector); count++; } else { count = 0; } }, speed); if(typeof(num) != 'undefined'){ num--; } } else{ key = false; console.log("抽獎(jiǎng)結(jié)束"); } } else { clearInterval(timer); // 決定抽中的獎(jiǎng)品的樣式和抽中的獎(jiǎng)品能否繼續(xù)抽 $('.' + addselector).addClass(newaddselector).removeClass(selector); // 獎(jiǎng)品 console.log($('.' + addselector).html()); } key = !key; } /** * [start 開(kāi)始抽獎(jiǎng)] * @param {[String]} selector [選擇器] * @param {[String]} addselector [給選中的添加樣式] * @param {[String]} newaddselector [中獎(jiǎng)獎(jiǎng)品樣式] * @param {[Number]} speed [時(shí)間越小,速度越快] * @return {[type]} [description] */ function startRan(selector, addselector, newaddselector, speed) { if (key) { if (typeof(num) == 'undefined' || num != 0) { // 如果寫(xiě)成var timer會(huì)每次執(zhí)行時(shí)重新定義一個(gè)timer,那么clearInterval(timer)只能清除后面定義的那個(gè)timer,前面定義的已經(jīng)沒(méi)有變量指向了 無(wú)法清除 timer = setInterval(function() { var count = Math.floor(Math.random() * $('.' + selector).length); $('.' + selector).eq(count).addClass(addselector); $('.' + selector).eq(count).siblings().removeClass(addselector); $('.' + selector).eq(count).parent().siblings().children().removeClass(addselector); }, speed); if(typeof(num) != 'undefined'){ num--; } } else { key = false; console.log("抽獎(jiǎng)結(jié)束"); } } else { clearInterval(timer); // 決定抽中的獎(jiǎng)品的樣式和抽中的獎(jiǎng)品能否繼續(xù)抽 $('.' + addselector).addClass(newaddselector).removeClass(selector); // 獎(jiǎng)品 console.log($('.' + addselector).html()); } key = !key; }
GitHub:地址
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。