1. 程式人生 > >利用隨機數與定時器做一個簡單的偽隨機抓鬮遊戲

利用隨機數與定時器做一個簡單的偽隨機抓鬮遊戲

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			.box1{
				width: 700px;
				height: 600px;
				background-color: orange;
				margin: auto;
				position: relative;			
			}
			.box2{
				width: 200px;
				height: 200px;
				background: wheat;
				position: absolute;
				left: 50px;
				top: 150px;
				font: 30px arial;
				color: red;
				line-height: 200px;
				text-align: center;
			}
			.box3{
				width: 200px;
				height: 200px;
				background: wheat;
				position: absolute;
				left: 450px;
				top: 150px;
				font: 30px arial;
				color: red;
				line-height: 200px;
				text-align: center;
			}
		</style>
	</head>
	<body>
		<div class="box1">
			<div class="box2" id="sb"></div>
			<input type="button" style="margin: 500px 210px;" value="開始" onclick="boxone()" />
			<div class="box3" id="sth"></div>
			<input type="button"  value="結束" onclick="boxtwo()" />
		</div>
		<script type="text/javascript">			
			var sname=["小黃","小紅","小藍","小綠","小青","小紫","小橙"];
			var sthing=["吃瓜","賣萌","嗑瓜子","搬凳子","看戲","賣汽水"];
			var timer;
			function boxone(){
					clearTimeout(timer);
					document.getElementById("sb").innerHTML=
					sname[Math.floor(Math.random()*sname.length)];
					
					document.getElementById("sth").innerHTML=
					sthing[Math.floor(Math.random()*sthing.length)];
					
					timer=setTimeout(boxone,200);
			}
			function boxtwo(){
				clearTimeout(timer);
			}
		</script>
	</body>
</html>

要求:點選開始後,姓名與事件每200ms變換一次,當點選結束後,停止變換,隨機顯示一個姓名與事件

————
定義兩個陣列,一個裝姓名,一個裝事件,順便定義一個定時器名

var sname=["小黃","小紅","小藍","小綠","小青","小紫","小橙"];
var sthing=["吃瓜","賣萌","嗑瓜子","搬凳子","看戲","賣汽水"];
var timer;
//document.getElementById("sb").innerHTML   獲取到的ID名為sb的元素裡面的內容
//Math.floor(Math.random()*sname.length)    隨機生成一個0到sname.length(兩個邊界均不包含)之間的數並向下取整,以此來隨機生成一個數組sname的下標。
//此段程式碼意為在陣列sname中隨機找一個元素將其賦給ID名為sb的元素。

document.getElementById("sb").innerHTML=
					sname[Math.floor(Math.random()*sname.length)];
					
//事件的處理方法一樣

————
利用定時器每200ms呼叫一次函式,為了使滾動速度不會越來越快,每使用定時器呼叫一次函式,都需要清除上一個定時器。

	function boxone(){
			clearTimeout(timer);
			document.getElementById("sb").innerHTML=
			sname[Math.floor(Math.random()*sname.length)];
					
			document.getElementById("sth").innerHTML=
			sthing[Math.floor(Math.random()*sthing.length)];
					
			timer=setTimeout(boxone,200);
			}

————
這裡結束按鈕的方法,清除定時器就行了

function boxtwo(){
				clearTimeout(timer);
			}