1. 程式人生 > >JavaScript day05 DOM程式設計3

JavaScript day05 DOM程式設計3

二、HTML DOM

在這裡插入圖片描述
1.選取物件

Element document.getElementById(string id)

說明:根據ID獲取文件中唯一的HTML元素

NodeList document.getElementsByTagName(string tagName)

說明:獲取文件中由指定的標記組成的集合(陣列)

NodeList Element.getElementsByTagName(string tagName)

說明:獲取元素中由指定的標記組成的集合(陣列)

NodeList document.getElementsByName(string name)

說明:獲取文件中由name屬性相同的標記組成的集合(陣列) – 針對表單元素使用

2.屬性控制

A.對於單個單詞的HTML標記屬性即HTML DOM物件屬性;

B.對於合成詞的HTML標記屬性(如table標記的cellpading、cellspacing屬性)在HTML DOM程式設計時,採用"駝峰標記法"命名(如cellPadding、cellSpacing)

C.對於HTML標記的class屬性,在HTML DOM程式設計時使用className取代;
(因為class是ECMAScript中的關鍵字)

D.對於HTML標記的布林屬性(如單/複選框的checked、列表項的selected屬性)在HTML DOM程式設計時採用boolean型別表示;

E.在HTML DOM程式設計時,某些HTMLDOM物件有自己特有的屬性/方法;


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>HTML DOM</title>
	<script>
		function validateForm(){
			//1.使用者名稱為必填項
			//1.1獲取"使用者名稱文字框"物件
			var usernameEle = document.getElementById('username');
			//1.2獲取"使用者名稱文字框"物件的值
			var usernameEleVal = entities(usernameEle.value);			
			//1.3根據"使用者名稱文字框"物件的值的長度來判斷是否已進行填寫
			if(usernameEleVal.length == 0){
				window.alert('使用者名稱為必填項');
				//讓"使用者名稱文字框"物件獲取焦點
				usernameEle.focus();
				return false;
			}			
			//2.密碼為必填項
			var passwordEle = document.getElementById('password');
			var passwordEleVal = entities(passwordEle.value);
			if(passwordEleVal.length == 0){
				window.alert('密碼為必填項');
				passwordEle.focus();
				return false;
			}
			//3.兩次密碼必須一致	
			//3.1獲取"確認密碼"物件
			var passwordEle2 = document.getElementById('password2')	;
			//"確認密碼"的值
			var passwordEleVal2 = entities(passwordEle2.value);
			//如果兩次密碼不一致
			if(passwordEleVal != passwordEleVal2){
				window.alert('兩次密碼不一致');
				passwordEle2.focus();
				return false;
			}
		}
		//將使用者名稱/密碼/確認密碼中的特殊符號替換為對應的HTML實體
		//以防止SQL注入的產生
		function entities(str){
			str = str.replace(/&/g,'&amp;');
			str = str.replace(/'/g,'&#39;');
			str = str.replace(/"/g,'&quot;');
			str = str.replace(/>/g,'&gt;');
			str = str.replace(/</g,'&lt;');
			str = str.replace(/ /g,'&nbsp;');
			return str;
		}

	</script>
</head>
<body>
	<form action="11.php" method="post" onsubmit="return validateForm()">
		<table width="600" border="1" cellpadding="10" cellspacing="0">
			<tr>
				<td>使用者名稱</td>
				<td><input type="text" name="username" id="username"></td>
			</tr>
			<tr>
				<td>密碼</td>
				<td><input type="password" name="password" id="password"></td>
			</tr>
			<tr>
				<td>確認密碼</td>
				<td><input type="password" name="password2" id="password2"></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td><input type="submit" value="免費註冊"></td>
			</tr>
		</table>
	</form>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>HTML DOM</title>
	<script>
		//全國的省份形成的陣列
		var proArr = [];
		//北京的區/市形成的陣列
		proArr[0] = ['東城區','西城區','朝陽區','豐臺區','石景山區','海淀區','門頭溝區','房山區','通州區','順義區','昌平區','大興區'];
		//上海的區/市形成的陣列		
		proArr[1] = ['虹口區','普陀區','靜安區','長寧區','徐彙區','黃浦區','金山區','浦東新區','嘉定區','寶山區','閔行區','楊浦區'];
		//天津的區/市形成的陣列
		proArr[2] = ['寶坻區','武清區','北辰區','津南區','西青區','東麗區','紅橋區','河北區','南開區','河西區','河東區','和平區'];
		//河北的區/市形成的陣列
		proArr[3] = ['廊坊市','滄州市','承德市','張家口市','保定市','邢臺市','邯鄲市','秦皇島市','唐山市','石家莊市'];
		//河南的區/市形成的陣列
		proArr[4] = ['鄭州市	','開封市','洛陽市','平頂山市'];
		function changeCity(){
			//1.獲取省份列表框物件
			var proEle = document.getElementById('provinces');
			//2.獲取被選定的省份的值
			var proVal =proEle.value;	
			//3.獲取城市列表框物件
			var cityEle = document.getElementById('cities');
			//4.在每次新增option物件前,"清空"以前的option列表
			cityEle.length = 1;
			//5.根據省份的值,然後動態的在城市列表框中新增選項(option)
			proArr[proVal].forEach(function(value,index){
				//建立option物件
				var optEle = new Option(value,index);
				//將option物件新增到城市列表框物件內
				cityEle.add(optEle);
			});		
		}		
	</script>
</head>
<body onload="changeCity()">
	<form action="" method="post">
		<table width="600" border="1" cellpadding="10" cellspacing="0">
			<tr>
				<td width="120">省份</td>
				<td>
				<select name="provinces" id="provinces" onchange="changeCity()">
					<option value="0">北京市</option>
					<option value="1">上海市</option>
					<option value="2">天津市</option>
					<option value="3">河北省</option>
					<option value="4">河南省</option>
				</select>
				</td>
			</tr>
			<tr>
				<td>城市</td>
				<td>
				<select name="cities" id="cities">
					<option value="0">請選擇...</option>	
				</select>
				</td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td><input type="submit" value="確認"></td>
			</tr>
		</table>
	</form>
</body>
</html>

F.HTML標記的style屬性在HTML DOM程式設計時形成CSSStyleDeclaration/CSS2Properties物件;


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>HTML DOM</title>
	<script>
		function getStyle(){
			var pEle = document.getElementById('p');
			window.alert(pEle.style);
		}
	</script>
</head>
<body>
	<p style="color:red" id="p">中國</p>
	<input type="button" value="單擊我,獲取段落物件的style屬性" onclick="getStyle()">
</body>
</html>

控制HTMLDOM物件的行內樣式的語法是:

object.style.CSS屬性名稱


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>HTML DOM</title>
	<script>
		function setInlineStyle(){
			//獲取DIV物件
			var divEle = document.getElementById('wrapper');
			//設定DIV物件的行內樣式(單個單詞)
			divEle.style.width = '300px';
			divEle.style.height = '200px';
			divEle.style.margin = '0 auto';
			divEle.style.border  ='1px solid #000';
			//設定DIV物件的行內樣式		
			divEle.style.fontSize = '24px';
			divEle.style.textAlign = 'center';
			divEle.style.fontFamily = 'Microsoft Yahei';
		}
	</script>
</head>
<body>
	<div id="wrapper">中國</div>
	<input type="button" value="單擊我,控制DIV的行內樣式" onclick="setInlineStyle()">
</body>
</html>