1. 程式人生 > 其它 >原生九宮格抽獎試寫

原生九宮格抽獎試寫

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<style>
		       .bodydom {
		           width: 600px;
		           height: 600px;
		           border: 1px solid;
		           display: flex;
		           flex-wrap: wrap;
					background-color: #F56C6C;
					border-radius: 10px;
		       }
		
		       .block {
		           width: 25%;
		           height: 25%;
		           border: 1px solid black;
		          text-align: center;
		           font-size: 20px;
					margin: 4%;
					display: flex;
					align-items: center;
					justify-content: center;
					border-radius: 10px;
					background-color: pink;
		       }
		
		       .block5 {
		           background-color: #409EFF;
		           cursor: pointer;
		       }
				.frequency{
					font-size:15px
				}
				.prize{
					font-size: 25px;
					margin-top: 10px;
				}
		   </style>

	</style>
	<body>
		<div class="bodydom">
		      <div class="block">鴻蒙紫氣*1</div>
		      <div class="block">現金百萬*1</div>
		      <div class="block">復活戒指*1</div>
		      <div class="block">謝謝參與</div>
		      <div class="block5 block">
					<div>
						<div>開始抽獎</div>
						<div class='frequency'>剩餘<span id='numbers'>3</span>次</div>
					</div>
				</div>
		      <div class="block">九陽真經*1</div>
		      <div class="block">宇宙戰艦*1</div>
		      <div class="block">世界樹*1</div>
		      <div class="block">神祕大獎</div>	
		</div>
		<div id='prize' style='prize'></div>
		<script>
			let blocks = document.getElementsByClassName("block");
			let list = [0, 1, 2, 5, 8, 7, 6, 3], i = 0, count = 0, stopTimer;  //list存放陣列的下標,i為下標值,預設從下標為0的開始,也就是左上角的高檔洋房一套,count用於判斷是否與隨機數相等每次加一
			let randomn = Math.floor(Math.random() * 8 + 50); // 建立隨機數隨機數 
			let timing = function () {
				// 將其他盒子都變為粉色
				for (let j = 0; j < list.length; j++) {
					blocks[list[j]].style.background = "pink";
				}
				blocks[list[i]].style.background = "white";
				i++; 
				// 重製i的值
				if (i === list.length) {
					i = 0;
				}
				//randomn的值最大為58,最小為50
				count++; // 根據count的值調整速度
				// 下面的4個if根據count的值來關閉計時器和重啟計時器 改變計時器的時間間隔
				if (count === 5 || count === 45) {
					clearInterval(stopTimer);
					stopTimer = setInterval(timing, 200);
				}
				if (count === 10 || count === 35) {
					clearInterval(stopTimer);
					stopTimer = setInterval(timing, 100);
				}
				if (count === 15) {
					clearInterval(stopTimer);
					stopTimer = setInterval(timing, 50);
				}
				// 當等於上面的隨機數時,停止計時器
				if (count === randomn) {
					clearInterval(stopTimer);
					var tips=blocks[list[i-1]].innerText
					if(i-1!=6){
						document.getElementById("prize").innerHTML='恭喜您獲得'+tips
					}else{
						document.getElementById("prize").innerHTML='不要灰心,再接再厲!'
					}
					count = 0  //重置count 的值
					 let randomn = Math.floor(Math.random() * 8 + 50); // 重新獲取隨機數
					 blocks[4].addEventListener("click", start);//重新繫結點選事件
				}
				
			}
			// 點選開始按鈕後 點選後執行 timing 
			let start = function () {
				blocks[4].removeEventListener("click", start); // 當點選了開始按鈕後 移除點選事件 防止使用者重複點選
				var numbers=document.getElementById("numbers").innerHTML
				if(numbers==0){
					alert('抱歉,您沒有抽獎次數!')
				}else{
					numbers--
					document.getElementById("numbers").innerHTML=numbers
					stopTimer = setInterval(timing, 300);
				}
				console.log(numbers)
				
			}
			blocks[4].addEventListener("click", start);  //下標為4的繫結點選事件,也就是開始抽獎
	
		</script>
	</body>
</html>