写出一个抽奖页面有200个人参加抽奖,每次抽出一个人,不能重复,必须每个人都要抽中奖前面10次抽奖要选中固定的10个人,每次就从这10人中随机抽取一人,不能重复从第11次开始就从剩余的190人当中抽奖,不能重复,直到抽奖结束已经中过奖的人不能再次抽奖<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> <title>多人抽奖页面</title> <style> html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video, code, form, fieldset, legend, input, textarea, blockquote { margin: 0; padding: 0; border: 0; } html { width: 100%; } body { width: 100%; } .draw-container { width: 705px; background: #00A0E9; margin: 50px auto 0; display: flex; box-sizing: border-box; padding-right: 5px; padding-bottom: 5px; align-items: center; overflow: hidden; flex-wrap: wrap; justify-content: space-between; } .draw-item { width: 30px; height: 30px; background: #5bb75b; margin-left: 5px; margin-top: 5px; display: flex; justify-content: center; align-items: center; } .btn-draw, .count-text{ width: 100px; height: 30px; display: flex; justify-content: center; align-items: center; margin: 20px auto 0; } .btn-draw { background: #0E0EFF; color: #fff; border-radius: 4px; box-shadow: 0 0 0 0 rgba(0,0,0,0.5); } .count-text { background: #00b3ee; } </style></head><body><div class="root"> <div class="draw-container"> </div> <div class="btn-draw">抽奖</div> <div class="count-text">次数0</div></div></body><script> function initPageEvent(func) { var oldOnload = window.onload if(typeof window.onload === 'function') { window.onload = function() { oldOnload() func() } } else { window.onload = function() { func() } } } // 创建范围内随机数 function createRandom(minVal, maxVal) { return parseInt(Math.random() * (maxVal-minVal+1), 10) + minVal } // 创建固定数组 function createFixArr(arr = [], length, minVal, maxVal) { if(arr.length < length) { let num = createRandom(minVal, maxVal) if(!arr.includes(num)) arr.push(num) return createFixArr(arr, length, minVal, maxVal) } else { return arr } } function createUniqueNum(arr, offset, limit, arrLimit) { console.log(arrLimit) let n = true while(n) { let unique if(arrLimit !== undefined) { unique = arrLimit[createRandom(offset, limit)] } else { unique = createRandom(offset, limit) } if(!arr.includes(unique)) { n = false return unique } } } function changeDrawDiv(index) { // document.querySelectorAll('.draw-item')[luckIndex].style.background = 'red' // document.querySelector('.count-text').innerHTML = indexDraw } // 抽奖前置事件 let preLuckDraw = function() { let offset = 0 let limit = 199 let arrTen = [] let numFixed = 10 arrTen = createFixArr(arrTen, numFixed, offset, limit); var indexDraw = 0 var participantList = [] // return function() { // arrTen.map(item => { // // console.log(item + '中奖') // document.querySelectorAll('.draw-item')[item].style.background = 'red' // }) // let arrLeaving = arrTen; // let n = true // while(n) { // let luckIndex = createRandom(offset, limit) // if(!arrLeaving.includes(luckIndex)) { // arrLeaving.push(luckIndex) // // console.log(luckIndex+ '中奖') // document.querySelectorAll('.draw-item')[luckIndex].style.background = 'red' // } // if(arrLeaving.length >= limit+1) { // // console.log('长度' + arrLeaving.length) // n = false // } // } // } return function() { console.log(indexDraw) console.log(participantList) let luckIndex if(indexDraw<numFixed) { luckIndex = createUniqueNum(participantList, 0, 9, arrTen); } else if(indexDraw<200){ luckIndex = createUniqueNum(participantList, offset, limit); } if(indexDraw<200) { participantList.push(luckIndex) document.querySelectorAll('.draw-item')[luckIndex].style.background = 'red' indexDraw = indexDraw + 1 document.querySelector('.count-text').innerHTML = indexDraw } else { document.querySelector('.btn-draw').innerHTML = '抽奖已经结束' } } } // 绘制div function createDiv() { for(var i=0; i<200; i++) { var divDrawItem = document.createElement('div') divDrawItem.className = 'draw-item' divDrawItem.innerText = i document.getElementsByClassName('draw-container')[0].appendChild(divDrawItem) } } // 加载页面事件 function initDrawEvent() { createDiv(); let luckDraw = preLuckDraw(); document.querySelector('.btn-draw').onclick = function () { luckDraw() } } initPageEvent(initDrawEvent)</script></html>
