1. 程式人生 > >event事件物件(應用案例,比如阻止冒泡)

event事件物件(應用案例,比如阻止冒泡)

event事件物件(應用案例,比如阻止冒泡)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>演示event事件物件(應用案例,比如阻止冒泡)-雪豹軟體工作室</title>
<link rel="stylesheet" type="text/css" href="body.css">
<style type="text/css">

body {
	color: black;
	font-weight: bold;
}

input {
	width: 80%;
	height: 40px;
	border: 2px solid #8E388E;
	border-radius: 5px; /*設定邊框的4個直角變成圓角有弧度*/
	font-weight: bold; /*文字框中的文字字型加粗*/
	color: blue;
}

input[type=button] {
	width: auto;
	color: white;
	background-color: #8E388E;
}

input[type=checkbox] {
	width: 16px;
	height: 16px;
}

h2 {
	color: red;
	text-algin: center;
	vertical-align: middle;
	display: inline;
}

div {
	background: #f0f0f0;
	width: 98%;
	height: 100px;
	border: solid 3px #8E388E;
	border-radius: 5px;
	margin: 0 auto;
	text-align: center;
	height: auto;
}

span {
	border: solid 3px #CD0000;
	border-radius: 5px; /*圓角弧度*/
	text-align: center;
	width: 300px;
	height: 60px;
	display: block; /*對span設定display屬性等於block後,span就會變成獨佔一行,span元素的前後內容會換行*/
	display: inline-block; /*即能實現span寬度和高度生效,又讓span元素前後內容不換行*/
}

.myDiv {
	border: solid 3px black;
}

.myDiv2 {
	border: solid 3px green;
}

.myDiv3 {
	border: solid 3px blue;
}
</style>

<script type="text/javascript">
	/**
	 參考網頁 http://www.jb51.net/article/48935.htm
	 參考網頁http://www.itxueyuan.org/view/6340.html
	 參考網頁http://www.w3school.com.cn/jsref/dom_obj_event.asp
	 */

	/**
	 * 關於事件物件,以下這篇文章寫得很詳細,可以參考
	 參考文章http://www.jb51.net/article/26552.htm
	 */

	function testEvent() {
		alert(window.event);
	}

	function testFirefoxEvent() {
		/**
		既然匿名函式的event傳入了,那麼在該閉包中clk是可以獲取到event的,事實上點
		擊後Firefox會報錯:event is not defined。猜測該匿名函式的閉包和function clk(){alert(event);}不
		是同一個閉包環境
		 */
		alert(arguments.callee.caller);
		alert(event);
	}

	function testFirefoxEvent2(arg1, arg2) {
		alert(arguments.callee.caller);
		alert(arg1);
		alert(arg2);
		alert("arguments[0]" + arguments[0]);
	}

	
	/*
	CSS、Display(顯示)與 Visibility(可見性)參考http://www.runoob.com/css/css-display-visibility.html
		display
	    隱藏必須使用none值,該隱藏不佔位,頁面原始碼可見。
	    顯示可使用空或block或inline,意思分別為:無此屬性、顯示視為div(有換行符)、顯示視為span(無換行符)。
	    
		visibility
    	隱藏必須使用hidden值,該隱藏佔位,頁面原始碼可見。
    	顯示可使用空或visible,意思分別為:無此屬性、顯示。
	*/
	
	//顯示或隱藏div(display的方式不會佔位置)
	function showOrHideElement1(elementId) {
		var divNode = document.getElementById(elementId);
		if (divNode.style.display == "none") {
			divNode.style.display = "block";
		} else {
			divNode.style.display = "none";
		}
	}

	//顯示或隱藏div(visibility的方式始終會佔位置)
	function showOrHideElement2(elementId) {
		var divNode = document.getElementById(elementId);
		if (divNode.style.visibility == "hidden") {
			divNode.style.visibility = "visible";
		} else {
			divNode.style.visibility = "hidden";
		}
	}
	
	//給每一個文字框的邊框設定隨機顏色
	function randomColor(){
		//定義一個顏色的陣列
		var colors = new Array("red", "blue", "#228B22", "#8E388E", "#5B5B5B", "#0A0A0A");
		var inputNodes = document.getElementsByTagName("input");
		for (var index = 0; index < inputNodes.length; index++) {
			if (inputNodes[index].type == "text") {
				//隨機設定文字框元素的邊框顏色
				inputNodes[index].style.border = "3px solid " + createRandomColor(colors);
			}
		}
	}
	
	//產生隨機顏色
	function createRandomColor(colorArray){
		//產生隨機數
		var randomNumber = Math.round(Math.random() * (colorArray.length - 1));
		return colorArray[randomNumber];
	}
	
	//阻止元素(在這裡是指點選的那個複選框)的預設行為
	function testCheckBox(e){
		//阻止元素的預設行為
		window.event ? window.event.returnValue = false : e.preventDefault();
	}
	
</script>

</head>
<body onload="randomColor()">

	<div id="div1">
	<h2>演示阻止元素的預設行為-雪豹軟體工作室</h2><br>
	愛好1上網<input type="checkbox" onclick="testCheckBox(event)">&nbsp;&nbsp;
	愛好2看書<input type="checkbox" onclick="testCheckBox(arguments[0])">&nbsp;&nbsp;
	<br> <br>
		<h2>演示event事件物件(應用案例,比如阻止冒泡)-雪豹軟體工作室</h2>
		<br> <br>
		<h2>演示div層的visibility屬性和display屬性的區別</h2>
		<br> <br>
	</div>
	<br>
	<div class="myDiv3">
		<br> <input type="button" value="點選我-顯示隱藏層(display的方式不會佔位置)"
			onclick="showOrHideElement1('div1')"> <br> <br>
	</div>
	<br>你們去改變世界,我只想認真賺錢!
	<span id="span1">我是span1</span>在你存款沒100萬前,你所有的愛好跟理想都應該是賺錢!
	<span id="span2">我是span2</span>小夥伴們,當務之急我們要做的只有一件事情,那就是拼命努力認真的賺錢!
	<br>
	<br>
	<input type="button" value="點選我-顯示隱藏span(display的方式不會佔位置)"
		onclick="showOrHideElement1('span1')">
	<br>
	<br>

	<input type="button" value="點選我-顯示隱藏span(visibility的方式始終會佔位置)"
		onclick="showOrHideElement2('span2')">
	<br>
	<br>

	<div id="div2" class="myDiv">
		<br> <br> <input type="text" value="點選我執行點選事件程式碼,火狐不支援"
			onclick="alert(window.event.type);"> <br> <br> <input
			type="text" value="點選我執行點選事件程式碼,支援IE,以前不支援火狐,現在支援火狐了"
			onclick="alert(event.type);"> <br> <br> <input
			type="text"
			value="我們可以通過Function的一個屬性argumengs獲取到該匿名函式的第一個引數,而該引數就是事件物件"
			onclick="alert(arguments[0].type);"> <br> <br> <input
			type="text" value="把匿名函式打印出來" onclick="alert(arguments.callee);">
		<br> <br> <input type="text" value="呼叫方法獲取事件物件,火狐不支援"
			onclick="testEvent()"> <br> <br> <input type="text"
			value="因為在Firefox中匿名函式是具有event引數" onclick="testFirefoxEvent()">
		<br> <br> <input type="text" value="通過顯示的引數傳入"
			onclick="testFirefoxEvent2(this,arguments[0])"> <br> <br>
	</div>
	<br>
	<div id="div3" class="myDiv2">
		<br> <br> <input type="button"
			value="點選我-顯示隱藏層(visibility的方式始終會佔位置)"
			onclick="showOrHideElement2('div2')"> <br> <br>
	</div>

</body>
</html>