第二十一章:JavaScript語言
作者:java_wxid
《JavaScript語言精粹》點選下載,密碼:synu
JavaScript介紹:
1.Javascript語言誕生主要是完成頁面的資料驗證。
2.它執行在客戶端,需要執行瀏覽器來解析執行JavaScript程式碼。
3.JS是Netscape網景公司的產品,最早取名為LiveScript;為了吸引更多java程式設計師。更名為javascript。
4.JS是弱型別,Java是強型別。
JavaScript特點:
1.互動性(它可以做的就是資訊的動態互動)
2.安全性(不允許直接訪問本地硬碟)
3.跨平臺性(只要是可以解釋Js的瀏覽器都可以執行,和平臺無關)
JavaScript和html程式碼的結合方式
第一種方式
只需要在head 標籤中,或者在body標籤中, 使用script 標籤 來書寫JavaScript程式碼
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <!-- script 裡面就是js程式碼 --> <script type="text/javascript"> // alert 是 js的警告框函式 // 它可以接收任意型別的引數,你給它傳什麼,它就彈出來什麼 alert("js hello"); </script> </head> <body> </body> </html>
第二種方式
使用Script 標籤引入 單獨的JavaScript程式碼檔案
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <!-- script標籤可以用來定義js程式碼,也可以用來引入單獨的js檔案 src屬性 設定需要引入的js的檔案路徑(相對路徑或絕對路徑) 一個script標籤只能做一件事情 。要麼用來定義js程式碼,要麼用來引入js檔案 --> <script type="text/javascript" src="1.js"></script> <script type="text/javascript"> alert(2222); </script> </head> <body> </body> </html>
變數
什麼是變數?
變數是可以存放某些值的記憶體的命名。
javaScript的變數型別:
數值型別: number int short long float double byte
字串型別: string
物件型別: object
布林型別: boolean
函式型別: function
javascript裡特殊的值:
undefined 未定義 所有未賦初始化的變數,預設值都是undefiend
null 空值
NAN not a number 非數值,非數字(做非法算術運算時,就會返回NAN)
JS中的定義變數格式:
var 變數名;
var 變數名 = 值;
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
var i ;
// alert(i);// undefiend
i = 12 ;
// typeof是一個函式。可以取變數的資料型別
// alert( typeof(i) );// number
i = "this is good boy!";
alert( typeof(i) );//string
</script>
</head>
<body>
</body>
</html>
關係(比較)運算
等於: ==
全等於: ===
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
var a = 12;
var b = "12";
// js中的等於,只是簡單的做字面值的比較
// alert( a == b );// true
// 全等於,除了做字面值的比較之外,還會檢查兩個變數的資料型別
alert( a === b );//false
</script>
</head>
<body>
</body>
</html>
邏輯運算
且運算: &&
或運算: ||
取反運算: !
0 、null、 undefined、””(空串) 都認為是 false;
&& 與運算。
有兩種情況:
第一種:當表示式全為真的時候。返回最後一個表示式的值。
第二種:當表示式中,有一個為假的時候。返回第一個為假的表示式的值
|| 或運算
第一種情況:當表示式全為假時,返回最後一個表示式的值
第二種情況:只要有一個表示式為真。就會把回第一個為真的表示式的值
並且 && 與運算 和 ||或運算 有短路。
短路就是說,當這個&&或||運算有結果了之後 。後面的表示式不再執行
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 0 、null、 undefined、””(空串) 都認為是 false;
// var a = 0;
// if ( a ) {
// alert("零為真");
// } else {
// alert("零為假");
// }
// var b = null;
// if ( b ) {
// alert("null為真");
// } else {
// alert("null為假");
// }
// var c = undefined;
// if ( c ) {
// alert("undefined為真");
// } else {
// alert("undefined為假");
// }
// var d = "";
// if ( d ) {
// alert("空串為真");
// } else {
// alert("空串為假");
// }
var a = "abc";
var b = true;
var d = false;
var c = null;
// && 與運算。
// 有兩種情況:
// 第一種:當表示式全為真的時候。返回最後一個表示式的值。
// alert( b && a );//abc
// alert( a && b );//true
// 第二種:當表示式中,有一個為假的時候。返回第一個為假的表示式的值
// alert( d && c ); // false
// alert( a && c ); // null
// || 或運算
// 第一種情況:當表示式全為假時,返回最後一個表示式的值
// alert( d || c ); // null
// alert( c || d ); // false
// 第二種情況:只要有一個表示式為真。就會把回第一個為真的表示式的值
// alert( b || c ); // true
// alert( d || a ); // abc
</script>
</head>
陣列
陣列定義方式
Js 中 陣列的定義:
格式:
var 陣列名 = []; // 定義一個空陣列
var 陣列名 = [ 值1,值2,值3 ]; // 定義陣列同時賦初始值
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// Js 中 陣列的定義:
// 格式:
// var 陣列名 = []; // 定義一個空陣列
var arr = [];
// alert( arr.length ); //0
arr[0] = 12; // 通過陣列下標給元素賦值
// alert( arr[0] );//12
// alert( arr.length );//1
// js的陣列在通過下載賦值的時候,會自動的根據最大下標 做擴容操作。
arr[2] = "abc";
// alert( arr.length ); //3
// alert( arr[1] ); //undefined
// 陣列的遍歷
// for (var i = 0; i < arr.length; i++) {
// alert( arr[i] );
// }
// var 陣列名 = [ 值1,值2,值3 ]; // 定義陣列同時賦初始值
var arr2 = [12,"abc",true];
// alert(arr2.length); // 3
arr2[9] = 12;
alert(arr2.length);
</script>
</head>
函式:
函式的二種定義方式
函式的第一種定義方式,使用function關鍵字進行定義函式。
格式如下:
function 函式名(形參列表){
函式體
}
如何訪問函式:
函式名( 實參列表 );
如何定義帶有返回值的函式?
答:只需要在函式體內直接使用return語句返回值即可。
<script type="text/javascript">
// 格式如下:
// function 函式名(形參列表){
// 函式體
// }
// 無參函式定義
// function fun(){
// alert("無參函式被呼叫了");
// }
// 有參函式
// function fun2( a , b ){
// alert("有參函式被呼叫 a=>" + a + ",b=>" + b);
// }
// 帶有返回值的函式定義
function sum( num1, num2 ){
return num1 + num2;
}
// 如何訪問函式: 函式名( 實參列表 );
// alert( sum("abc",100) );
</script>
函式的第二種定義方式是:
var 函式名 = function(引數列表){函式體}
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
var fun = function(num){
alert("函式第二種定義方式 : " + num);
}
fun(123);
</script>
</head>
注:在Java中函式允許過載。但是在Js中函式的過載會直接覆蓋掉上一次的定義
<script type="text/javascript">
function fun(a,b){
alert(a);
alert(b);
alert("有參函式被呼叫");
}
function fun(){
alert("無參函式被呼叫");
}
fun(12,"abc",true);
</script>
函式的 arguments 隱形引數(只在function函式內)
可變長引數:public void fun( int a , Object … args )……
args就是可變長引數
它本身是一個數組。
js中函式自帶有一個隱形引數arguments ,基本上使用跟java的可變長引數一樣。
都是用來接收任意多個引數。它的使用跟陣列一樣。
<script type="text/javascript">
function fun(a,b){
alert(a);
alert(b);
alert("有參函式被呼叫");
}
function fun(pa,pb){
alert( arguments.length );//3
alert( arguments[0] );//12
alert( arguments[1] );//abc
alert( arguments[2] );//true
alert("=====================");
alert( pa );//12
alert( pb );//abc
alert("無參函式被呼叫");
}
// fun(12,"abc",true);
//需求:現在需要有一個方法,可以計算傳遞進來的所有引數(只相加數字)相加的和並返回
function sum(){
var result = 0;
for (var i = 0; i < arguments.length; i++) {
if ( typeof(arguments[i]) == "number" ) {
result += arguments[i];
}
}
return result;
}
alert( sum(100,"abc",100,1000) );
</script>
JS中的自定義物件(擴充套件內容)
Object形式的自定義物件
var 變數名 = new Object(); 建立一個物件例項(空)
變數名.屬性名 = 值; 給物件例項,定義了一個屬性
變數名.函式名 = function(){} 給物件例項,新增一個方法
如何訪問物件: 變數名.屬性名/方法名()
<script type="text/javascript">
var obj = new Object();
obj.name = "國哥好帥!";
obj.age = 18;
obj.fun = function(){
alert("姓名:" + this.name + ",年齡:" + this.age);
}
// 訪問物件
// alert( obj.name );
obj.fun();
</script>
{}花括號形式的自定義物件
var 變數名 = { //定義一個空物件
屬性名 : 值, //定義了一個屬性
函式名 : function(){} // 定義一個函式
};
如何訪問物件: 變數名.屬性名/方法名()
<script type="text/javascript">
var obj = {
name:"華仔",
age:18,
fun:function(){
alert("姓名:" + this.name + ",年齡:" + this.age);
}
};
alert(obj.name);
obj.fun();
</script>
js中的事件(重要)
什麼是事件?
事件是電腦輸入裝置與頁面進行互動的響應。我們稱之為事件。
常用的事件:
onload載入完成事件 常用於頁面被瀏覽器載入完成之後自動做一些初始化工作。
onclick單擊事件 常用於按鈕被單擊之後的響應工作
onblur失去焦點事件 常用於輸入框失去焦點後,驗證其中的內容是否合法
onchange內容發生改變事件 常用於輸入框或下拉列表內容發生改變後響應
onsubmit表單提交事件 常用於表單提交,在提交之前驗證所有表單項是否合法。只要有一個不合法,就阻止表單提交。
事件的註冊又分為靜態註冊和動態註冊兩種:
註冊事件和繫結事件是一個東西
註冊事件,就是告訴瀏覽器,當事件觸發後,需要執行哪些程式碼。
靜態註冊事件:靜態註冊是指通過事件屬性直接賦於事件響應後的程式碼,這種方式我們稱之為靜態註冊。
動態註冊事件:動態註冊是指,通過先獲取標籤物件。然後再通過標籤物件.事件名 = function(){}的方式賦值,這種操作叫動態註冊。
window.onload = function(){
1 查詢標籤物件
2 通過標籤物件.事件名 = function(){}
}
onload事件示例程式碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = function(){
alert("頁面載入完成==動態");
}
</script>
</head>
<!-- 靜態註冊
<body onload="alert('頁面載入完成!');"> -->
<body>
</body>
</html>
onclick事件示例程式碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function onclickFun(){
alert("這是單擊事件靜態註冊");
}
//動態註冊單擊事件
window.onload = function(){
// 1 查詢標籤物件
// getElementById 通過id屬性值獲取標籤物件
// get 是獲取
// Element是元素(元素就是標籤)
// by 由..通過
// id id屬性
var btnObj = document.getElementById("btn01");
// alert( btnObj );
// 2 通過標籤物件.事件名 = function(){}
btnObj.onclick = function(){
alert("這是動態註冊的onclick事件");
}
}
</script>
</head>
<body>
<!--
靜態註冊單擊事件:
-->
<input type="button" value="按鈕1" onclick="onclickFun();"/>
<button id="btn01">按鈕2</button>
</body>
</html>
onblur失去焦點事件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function onblurFun(){
// console這是js中提供的一個專門用於除錯的物件。表示控制檯
// log方法就是輸出內容。可以傳遞任意引數
console.log("這是靜態註冊onblur事件");
}
window.onload = function(){
//1 獲取標籤物件
var passObj = document.getElementById("password");
//2 通過標籤物件.事件名 = function(){}
passObj.onblur = function(){
console.log("這是動態註冊的onblur事件");
}
}
</script>
</head>
<body>
使用者名稱:<input type="text" onblur="onblurFun();"/><br/>
密碼:<input id="password" type="password" /><br/>
</body>
</html>
onchange內容發生改變事件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function onchangeFun(){
alert("靜態註冊onchange事件");
}
window.onload = function(){
//1 獲取標籤物件
var selObj = document.getElementById("sel01");
// alert( selObj );
//2 通過標籤物件.事件名 = function(){}
selObj.onchange = function(){
alert("動態註冊onchange事件");
}
}
</script>
</head>
<body>
請選擇你心中的女神:
<select onchange="onchangeFun();">
<option>--請選擇--</option>
<option>劉奕菲</option>
<option>迪麗熱巴</option>
<option>殺那啦</option>
</select>
<br/>
請選擇你心中的男神:
<select id="sel01">
<option>--請選擇--</option>
<option>國哥</option>
<option>龍哥</option>
<option>華仔</option>
<option>強哥</option>
</select>
</body>
</html>
onsubmit表單提交事件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function onsubmitFun(){
alert("開始驗證表單項,發現不合法");
return false;
}
//
window.onload = function(){
// 獲取標籤
var formObj = document.getElementById("form01");
// alert(formObj);
// 通過標籤物件.事件名=function(){}
formObj.onsubmit = function(){
alert("動態註冊==開始驗證表單項,發現不合法");
return false;
}
}
</script>
</head>
<body>
<!--
onsubmit事件,return false。就會阻止表單提交
-->
<form action="http://www.baidu.com" onsubmit="return onsubmitFun();">
<input type="submit" value="靜態註冊"/>
</form>
<form action="http://www.baidu.com" id="form01">
<input type="submit" value="動態註冊"/>
</form>
</body>
</html>
DOM 模型
DOM 全稱是Document Object Model 文件物件模型,把文件中的標籤,屬性,文字,轉換成為物件來管理。
Document 物件的理解:
第一點:Document它管理了所有的Html文件內容。
第二點:document它是一種樹結構的文件。有層級關係。
第三點:它讓我們把所有的標籤 都 物件化
第四點:我們可以通過document訪問所有的標籤物件。
什麼是物件化??
我們基礎班已經學過面向物件。請問什麼是物件化?
舉例:
有一個人有年齡:18歲,性別:女,名字:張某某
我們要把這個人的資訊物件化怎麼辦!
Class Person {
private int age;
private String sex;
private String name;
}
那麼 html 標籤 要 物件化 怎麼辦?
<body>
<div id="div01">div01</div>
</body>
模擬物件化,相當於:
class Dom{
private String id; // id屬性
private String tagName; //表示標籤名
private Dom parentNode; //父親
private List children; // 孩子結點
private String innerHTML; // 起始標籤和結束標籤中間的內容
}
Document物件中的方法介紹(*****重點)
1.document.getElementById(elementId)通過標籤的id屬性查詢標籤dom物件,elementId是標籤的id屬性值
2.document.getElementsByName(elementName)通過標籤的name屬性查詢標籤dom物件,elementName標籤的name屬性值
3.document.getElementsByTagName(tagname)通過標籤名查詢標籤dom物件。tagname是標籤名
4.document.createElement( tagName )方法,通過給定的標籤名,建立一個標籤物件。tagName是要建立的標籤名
如果標籤物件有id屬性,優先使用getElementById查詢標籤物件
如果標籤沒有id屬性,只有name屬性,則使用getElementsByName方法進行查詢
如果標籤即沒有id屬性,也沒有name屬性,最後才使用getElementsByTagName
getElementById和getElementsByName和getElementsByTagName都需要在頁面載入完成之後執行。才能得到標籤物件。
getElementById方法示例程式碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 需求,當用戶點選 【驗證】 按鈕的時候,幫我驗證一下,輸入框中的內容是否合法
// 驗證的規則是:必須由字母,數字,下劃線組成,並且長度是5到12位
// 1、繫結單擊事件
function onclickFun(){
// 2 獲取輸入框中的內容
// 當我們要操作一個標籤物件的時候。一定要先獲取到這個標籤物件。
var usernameObj = document.getElementById("username");
var usernameText = usernameObj.value;
// 獲取用來輸出驗證結果的span標籤物件
var spanObj = document.getElementById("usernameSpan");
// innerHTML表示起始標籤和結束標籤中的內容
// 這個屬性,可讀可寫
// spanObj.innerHTML = "帥哥講的真細";
// 3 使用正則表示式去驗證
var patt = /^\w{5,12}$/;//驗證的規則是:必須由字母,數字,下劃線組成,並且長度是5到12位
// 正則物件有一個test方法。可以用來驗證一個字串是否匹配正則表示式
// 匹配就返回ture,不匹配就返回false
if (patt.test(usernameText)) {
// spanObj.innerHTML = "使用者名稱合法";
spanObj.innerHTML = "<img alt=\"\" src='right.png' width='15' height='15' />";
} else {
// spanObj.innerHTML = "使用者名稱不合法";
spanObj.innerHTML = "<img alt=\"\" src='wrong.png' width='15' height='15' />";
}
}
</script>
</head>
<body>
使用者名稱:<input type="text" id="username" value="wzg168"/>
<span style="color: red;" id="usernameSpan"></span>
<button onclick="onclickFun()">驗證</button>
</body>
</html>
getElementsByName方法示例程式碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 全選事件
function checkAll(){
// 當我們要操作一個標籤物件的時候。一定要先獲取到這個標籤物件。
//getElementsByName是根據name屬性查詢返回物件的集合。
//這個集合的操作跟陣列一樣
//這個集合中的元素順序剛好是它們在html頁面中,從上到下的順序
var hobbies = document.getElementsByName("hobby");
// checked屬性表示單選,複選框的選中狀態。
// 這個屬性可讀,可寫
for (var i = 0; i < hobbies.length; i++) {
hobbies[i].checked = true;
}
}
// 全不選
function checkNo(){
var hobbies = document.getElementsByName("hobby");
// checked屬性表示單選,複選框的選中狀態。
// 這個屬性可讀,可寫
for (var i = 0; i < hobbies.length; i++) {
hobbies[i].checked = false;
}
}
// 反選
function checkReverse(){
var hobbies = document.getElementsByName("hobby");
// checked屬性表示單選,複選框的選中狀態。
// 這個屬性可讀,可寫
for (var i = 0; i < hobbies.length; i++) {
// if (hobbies[i].checked) {
// hobbies[i].checked = false;
// } else {
// hobbies[i].checked = true;
// }
hobbies[i].checked = !hobbies[i].checked;
}
}
</script>
</head>
<body>
興趣愛好:
<input type="checkbox" name="hobby" checked="checked" value="hj"/>喝酒
<input type="checkbox" name="hobby" value="cy"/>抽菸
<input type="checkbox" name="hobby" value="tt"/>湯頭
<br/>
<button onclick="checkAll();">全選</button>
<button onclick="checkNo();">全不選</button>
<button onclick="checkReverse();">反選</button>
</body>
</html>
getElementsByTagName方法示例程式碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 全選事件
function checkAll(){
//getElementsByTagName是通過指定的標籤名查詢返回全部的標籤物件集合。
//這個集合的操作跟陣列一樣
//這個集合中的元素順序跟他們在html頁面中,從上到下的順序一致!
var inputObjs = document.getElementsByTagName("input");
for (var i = 0; i < inputObjs.length; i++) {
inputObjs[i].checked = true;
}
}
</script>
</head>
<body>
興趣愛好:
<input type="checkbox" checked="checked" value="hj"/>喝酒
<input type="checkbox" value="cy"/>抽菸
<input type="checkbox" value="tt"/>湯頭
<br/>
<button onclick="checkAll();">全選</button>
</body>
</html>
createElement方法示例程式碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = function(){
// 需求:通過程式碼建立標籤:<div>帥哥棒棒噠!</div>,並新增到body標籤中去顯示
var divObj = document.createElement("div"); //<div></div>
// alert( divObj );
//divObj.innerHTML = "帥哥萌萌噠!"; //<div>帥哥萌萌噠!</div>
var textNode = document.createTextNode("帥哥萌萌噠!");
divObj.appendChild( textNode );
//appendChild給body標籤新增子元素
document.body.appendChild( divObj );
}
</script>
</head>
<body>
</body>
</html>
節點的常用屬性和方法
所謂 節點 ,就是前面講的標籤物件。
方法:
通過具體的元素節點呼叫
getElementsByTagName()
方法,獲取當前節點的指定標籤名孩子節點
appendChild( oChildNode )
方法,可以新增一個子節點,oChildNode是要新增的孩子節點
屬性:
childNodes屬性,獲取當前節點的所有子節點
firstChild屬性,獲取當前節點的第一個子節點
lastChild屬性,獲取當前節點的最後一個子節點
parentNode屬性,獲取當前節點的父節點
nextSibling屬性,獲取當前節點的下一個節點
previousSibling屬性,獲取當前節點的上一個節點
className屬性,用於獲取或設定標籤的class屬性值
innerHTML 屬性,表示獲取/設定起始標籤和結束標籤中的內容
innerText屬性,表示獲取/設定起始標籤和結束標籤中的文字
練習:05.DOM查詢練習
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dom查詢</title>
<link rel="stylesheet" type="text/css" href="style/css.css" />
<script type="text/javascript">
window.onload = function(){
//1.查詢#bj節點
document.getElementById("btn01").onclick = function(){
alert( document.getElementById("bj").innerHTML );
}
//2.查詢所有li節點
var btn02Ele = document.getElementById("btn02");
btn02Ele.onclick = function(){
alert( document.getElementsByTagName("li").length );
};
//3.查詢name=gender的所有節點
var btn03Ele = document.getElementById("btn03");
btn03Ele.onclick = function(){
alert( document.getElementsByName("gender").length );
};
//4.查詢#city下所有li節點
var btn04Ele = document.getElementById("btn04");
btn04Ele.onclick = function(){
//1 先查詢id為city的標籤
//2 再查詢city的li子元素
alert( document.getElementById("city").getElementsByTagName("li").length );
};
//5.返回#city的所有子節點
var btn05Ele = document.getElementById("btn05");
btn05Ele.onclick = function(){
//1 先查詢id為city
alert( document.getElementById("city").childNodes.length );
//2 再通過city物件。獲取所有子節點
};
//6.返回#phone的第一個子節點
var btn06Ele = document.getElementById("btn06");
btn06Ele.onclick = function(){
//1 先查詢id為phone的標籤物件
alert( document.getElementById("phone").firstChild.innerHTML );
//2 再根據phone標籤物件,查詢第一個子節點
};
//7.返回#bj的父節點
var btn07Ele = document.getElementById("btn07");
btn07Ele.onclick = function(){
//1先查詢id為bj的節點
alert( document.getElementById("bj").parentNode.innerHTML );
//2再通過bj節點找到父節點
};
//8.返回#android的前一個兄弟節點
var btn08Ele = document.getElementById("btn08");
btn08Ele.onclick = function(){
alert( document.getElementById("android").previousSibling.innerHTML );
};
//9.讀取#username的value屬性值
var btn09Ele = document.getElementById("btn09");
btn09Ele.onclick = function(){
alert( document.getElementById("username").value );
};
//10.設定#username的value屬性值
var btn10Ele = document.getElementById("btn10");
btn10Ele.onclick = function(){
document.getElementById("username").value = "帥哥帥不要不要的";
};
//11.返回#bj的文字值
var btn11Ele = document.getElementById("btn11");
btn11Ele.onclick = function(){
// alert( document.getElementById("bj").innerText );
alert( document.getElementById("city").innerText );
};
};
</script>
</head>
<body>
<div id="total">
<div class="inner">
<p>
你喜歡哪個城市?
</p>
<ul id="city">
<li id="bj">北京</li>
<li>上海</li>
<li>東京</li>
<li>首爾</li>
</ul>
<br>
<br>
<p>
你喜歡哪款單機遊戲?
</p>
<ul id="game">
<li id="rl">紅警</li>
<li>實況</li>
<li>極品飛車</li>
<li>魔獸</li>
</ul>
<br />
<br />
<p>
你手機的作業系統是?
</p>
<ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
</div>
<div class="inner">
gender:
<input type="radio" name="gender" value="male"/>
Male
<input type="radio" name="gender" value="female"/>
Female
<br>
<br>
name:
<input type="text" name="name" id="username" value="abcde"/>
</div>
</div>
<div id="btnList">
<div><button id="btn01">查詢#bj節點</button></div>
<div><button id="btn02">查詢所有li節點</button></div>
<div><button id="btn03">查詢name=gender的所有節點</button></div>
<div><button id="btn04">查詢#city下所有li節點</button></div>
<div><button id="btn05">返回#city的所有子節點</button></div>
<div><button id="btn06">返回#phone的第一個子節點</button></div>
<div><button id="btn07">返回#bj的父節點</button></div>
<div><button id="btn08">返回#android的前一個兄弟節點</button></div>
<div><button id="btn09">返回#username的value屬性值</button></div>
<div><button id="btn10">設定#username的value屬性值</button></div>
<div><button id="btn11">返回#bj的文字值</button></div>
</div>
</body>
</html>
補充:點選常用的正則表示式