1. 程式人生 > >Event事件(2)及Json物件

Event事件(2)及Json物件

Event事件(2) 1.事件委託: 把一個事件讓別的元素去做(當為某些元素新增相同的事件時,可以為這些元素的父元素新增該事件)。 優點: ①提高程式的執行效率 ②動態建立的元素新增事件可以在動態建立的函式外面新增事件。 ③冒泡或者捕獲都可以產生事件委託。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="button" value="建立li" id="btn" />
		<ul>
			<li>孩子多個1</li>
			<li>孩子多個2</li>
			<li>孩子多個3</li>
			<li>孩子多個4</li>
			<li>孩子多個5</li>
			<li>孩子多個6</li>
			<li>孩子多個7</li>
			<li>孩子多個8</li>
			<li>孩子多個9</li>
			<li>孩子多個10</li>
		</ul>
	</body>
</html>
<script>
	oUl.addEventListener("click",function(e){
		var e = e || event;
		//this指向  ul
		//使用委託的關鍵:重新獲取事件源
		var target = e.target || e.srcElement;
		if( target.tagName.toLowerCase() == "li" ){
			alert( target.innerHTML );
		}
	})
</script>	

2.瀏覽器的一些預設行為 ①:右鍵單擊出現的選單 ②:超連結的預設跳轉和重新整理頁面 ③:form表單中的submit按鈕,會重新整理瀏覽器 ④:瀏覽器的圖片和被選中的文字,預設會被拖拽

3.取消瀏覽器預設行為 e.preventDefault(); e.returnValue = false;//相容IE 相容寫法: e.preventDefault ? e.preventDefault() : e.returnValue= false; 或者在函式的最後寫return false;(return後什麼都不執行了)

3.Json物件: Json(javascript object notation)全稱是javascript物件表示法,它是一種資料交換的文字格式,而不是一種程式語言,用於讀取結構化資料。 作用:儲存資料 Json簡單的資料的存取: ①:簡單值使用與JavaScript相同的語法,可以在JSON中表示字串、數值、布林值和null,字串必須使用雙引號表示,不能使用單引號。數值必須以十進位制表示,且不能使用NaN和Infinity。 ②:物件作為一種複雜資料型別,表示的是一組有序的鍵值對兒。而每個鍵值對兒中的值可以是簡單值,也可以是複雜資料型別的值。   與javascript的物件字面量相比,json有三個不同的地方   1、JSON沒有變數的概念   2、JSON中,物件的鍵名必須放在雙引號裡面   3、因為JSON不是javascript語句,所以沒有末尾的分號

拖拽案例(百度登陸時候的掃描二維碼介面可以拖動): 思路: 1.需要通過三個事件完成 onmousedown 、onmousemove、onmouseup。 2.滑鼠按下時需要記錄按下時相對於操作後的元素的內部偏移量offsetX||offsetY 3.滑鼠移動時設定物體的left和top值。left = pageX - offsetX;top = pageY - offsetY; 4.滑鼠按鍵擡起時取消移動。

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title></title>
	<link rel="stylesheet" href="">
	<style type="text/css">
		#box{
			height: 200px;width: 200px;background: skyblue;border-radius: 50%;
			cursor: move;
			position: absolute;
		}
	</style>
</head>
<body>
	<div id="box">
		
	</div>
</body>
</html>
<script type="text/javascript">
	box.onmousedown = function (e) {
		var e = e||event;
		var disx = e.offsetX || layerX;
		var disy = e.offsetY || layerY; 
		document.onmousemove = function (e) {
			var e = e || event;
			var x = e.pageX - disx;
			var y = e.pageY - disy;
			var maxX = window.innerWidth - 200;
			var maxY = window.innerHeight - 200;
			if (x < 0) {
				x = 0;
			}else if (x>maxX) {
				x = maxX;
			}
			if (y < 0) {
				y = 0;
			}else if (y>maxY) {
				y = maxY;
			}
			
			box.style.left = x+'px';
			box.style.top = y+'px';
		}
		document.onmouseup = function(){
			document.onmousemove = '';
		}
	}
</script>