Web階段:第三章:JavaScript語言
《JavaScript語言精粹》點擊下載,密碼:synu
JavaScript介紹:
1.Javascript語言誕生主要是完成頁面的數(shù)據(jù)驗證。
2.它運行在客戶端,需要運行瀏覽器來解析執(zhí)行JavaScript代碼。
3.JS是Netscape網(wǎng)景公司的產(chǎn)品,最早取名為LiveScript;為了吸引更多java程序員。更名為javascript。
4.JS是弱類型,Java是強類型。
JavaScript特點:
1.交互性(它可以做的就是信息的動態(tài)交互)
2.安全性(不允許直接訪問本地硬盤)
3.跨平臺性(只要是可以解釋Js的瀏覽器都可以執(zhí)行,和平臺無關)
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的警告框函數(shù)
// 它可以接收任意類型的參數(shù),你給它傳什么,它就彈出來什么
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>
變量
什么是變量?
變量是可以存放某些值的內(nèi)存的命名。
javaScript的變量類型:
數(shù)值類型: number int short long float double byte
字符串類型: string
對象類型: object
布爾類型: boolean
函數(shù)類型: function
javascript里特殊的值:
undefined 未定義 所有未賦初始化的變量,默認值都是undefiend
null 空值
NAN not a number 非數(shù)值,非數(shù)字(做非法算術運算時,就會返回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是一個函數(shù)??梢匀∽兞康臄?shù)據(jù)類型
// 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
// 全等于,除了做字面值的比較之外,還會檢查兩個變量的數(shù)據(jù)類型
alert( a === b );//false
</script>
</head>
<body>
</body>
</html>
邏輯運算
且運算: &&
或運算: ||
取反運算: !
0 、null、 undefined、””(空串) 都認為是 false;
&& 與運算。
有兩種情況:
第一種:當表達式全為真的時候。返回最后一個表達式的值。
第二種:當表達式中,有一個為假的時候。返回第一個為假的表達式的值
|| 或運算
第一種情況:當表達式全為假時,返回最后一個表達式的值
第二種情況:只要有一個表達式為真。就會把回第一個為真的表達式的值
并且 && 與運算 和 ||或運算 有短路。
短路就是說,當這個&&或||運算有結果了之后 。后面的表達式不再執(zhí)行
<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>
數(shù)組
數(shù)組定義方式
Js 中 數(shù)組的定義:
格式:
var 數(shù)組名 = []; // 定義一個空數(shù)組
var 數(shù)組名 = [ 值1,值2,值3 ]; // 定義數(shù)組同時賦初始值
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// Js 中 數(shù)組的定義:
// 格式:
// var 數(shù)組名 = []; // 定義一個空數(shù)組
var arr = [];
// alert( arr.length ); //0
arr[0] = 12; // 通過數(shù)組下標給元素賦值
// alert( arr[0] );//12
// alert( arr.length );//1
// js的數(shù)組在通過下載賦值的時候,會自動的根據(jù)最大下標 做擴容操作。
arr[2] = "abc";
// alert( arr.length ); //3
// alert( arr[1] ); //undefined
// 數(shù)組的遍歷
// for (var i = 0; i < arr.length; i++) {
// alert( arr[i] );
// }
// var 數(shù)組名 = [ 值1,值2,值3 ]; // 定義數(shù)組同時賦初始值
var arr2 = [12,"abc",true];
// alert(arr2.length); // 3
arr2[9] = 12;
alert(arr2.length);
</script>
</head>
函數(shù):
函數(shù)的二種定義方式
函數(shù)的第一種定義方式,使用function關鍵字進行定義函數(shù)。
格式如下:
function 函數(shù)名(形參列表){
函數(shù)體
}
如何訪問函數(shù):
函數(shù)名( 實參列表 );
如何定義帶有返回值的函數(shù)?
答:只需要在函數(shù)體內(nèi)直接使用return語句返回值即可。
<script type="text/javascript">
// 格式如下:
// function 函數(shù)名(形參列表){
// 函數(shù)體
// }
// 無參函數(shù)定義
// function fun(){
// alert("無參函數(shù)被調(diào)用了");
// }
// 有參函數(shù)
// function fun2( a , b ){
// alert("有參函數(shù)被調(diào)用 a=>" + a + ",b=>" + b);
// }
// 帶有返回值的函數(shù)定義
function sum( num1, num2 ){
return num1 + num2;
}
// 如何訪問函數(shù): 函數(shù)名( 實參列表 );
// alert( sum("abc",100) );
</script>
函數(shù)的第二種定義方式是:
var 函數(shù)名 = function(參數(shù)列表){函數(shù)體}
<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("函數(shù)第二種定義方式 : " + num);
}
fun(123);
</script>
</head>
注:在Java中函數(shù)允許重載。但是在Js中函數(shù)的重載會直接覆蓋掉上一次的定義
<script type="text/javascript">
function fun(a,b){
alert(a);
alert(b);
alert("有參函數(shù)被調(diào)用");
}
function fun(){
alert("無參函數(shù)被調(diào)用");
}
fun(12,"abc",true);
</script>
函數(shù)的 arguments 隱形參數(shù)(只在function函數(shù)內(nèi))
可變長參數(shù):public void fun( int a , Object … args )……
args就是可變長參數(shù)
它本身是一個數(shù)組。
js中函數(shù)自帶有一個隱形參數(shù)arguments ,基本上使用跟java的可變長參數(shù)一樣。
都是用來接收任意多個參數(shù)。它的使用跟數(shù)組一樣。
<script type="text/javascript">
function fun(a,b){
alert(a);
alert(b);
alert("有參函數(shù)被調(diào)用");
}
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("無參函數(shù)被調(diào)用");
}
// fun(12,"abc",true);
//需求:現(xiàn)在需要有一個方法,可以計算傳遞進來的所有參數(shù)(只相加數(shù)字)相加的和并返回
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中的自定義對象(擴展內(nèi)容)
Object形式的自定義對象
var 變量名 = new Object(); 創(chuàng)建一個對象實例(空)
變量名.屬性名 = 值; 給對象實例,定義了一個屬性
變量名.函數(shù)名 = 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 變量名 = { //定義一個空對象
屬性名 : 值, //定義了一個屬性
函數(shù)名 : function(){} // 定義一個函數(shù)
};
如何訪問對象: 變量名.屬性名/方法名()
<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失去焦點事件 常用于輸入框失去焦點后,驗證其中的內(nèi)容是否合法
onchange內(nèi)容發(fā)生改變事件 常用于輸入框或下拉列表內(nèi)容發(fā)生改變后響應
onsubmit表單提交事件 常用于表單提交,在提交之前驗證所有表單項是否合法。只要有一個不合法,就阻止表單提交。
事件的注冊又分為靜態(tài)注冊和動態(tài)注冊兩種:
注冊事件和綁定事件是一個東西
注冊事件,就是告訴瀏覽器,當事件觸發(fā)后,需要執(zhí)行哪些代碼。
靜態(tài)注冊事件:靜態(tài)注冊是指通過事件屬性直接賦于事件響應后的代碼,這種方式我們稱之為靜態(tài)注冊。
動態(tài)注冊事件:動態(tài)注冊是指,通過先獲取標簽對象。然后再通過標簽對象.事件名 = function(){}的方式賦值,這種操作叫動態(tài)注冊。
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("頁面加載完成==動態(tài)");
}
</script>
</head>
<!-- 靜態(tài)注冊
<body "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("這是單擊事件靜態(tài)注冊");
}
//動態(tài)注冊單擊事件
window.onload = function(){
// 1 查找標簽對象
// getElementById 通過id屬性值獲取標簽對象
// get 是獲取
// Element是元素(元素就是標簽)
// by 由..通過
// id id屬性
var btnObj = document.getElementById("btn01");
// alert( btnObj );
// 2 通過標簽對象.事件名 = function(){}
btnObj.onclick = function(){
alert("這是動態(tài)注冊的onclick事件");
}
}
</script>
</head>
<body>
<!--
靜態(tài)注冊單擊事件:
-->
<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中提供的一個專門用于調(diào)試的對象。表示控制臺
// log方法就是輸出內(nèi)容??梢詡鬟f任意參數(shù)
console.log("這是靜態(tài)注冊onblur事件");
}
window.onload = function(){
//1 獲取標簽對象
var passObj = document.getElementById("password");
//2 通過標簽對象.事件名 = function(){}
passObj.onblur = function(){
console.log("這是動態(tài)注冊的onblur事件");
}
}
</script>
</head>
<body>
用戶名:<input type="text" onblur="onblurFun();"/><br/>
密碼:<input id="password" type="password" /><br/>
</body>
</html>
onchange內(nèi)容發(fā)生改變事件
<!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("靜態(tài)注冊onchange事件");
}
window.onload = function(){
//1 獲取標簽對象
var selObj = document.getElementById("sel01");
// alert( selObj );
//2 通過標簽對象.事件名 = function(){}
selObj.onchange = function(){
alert("動態(tài)注冊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("開始驗證表單項,發(fā)現(xiàn)不合法");
return false;
}
//
window.onload = function(){
// 獲取標簽
var formObj = document.getElementById("form01");
// alert(formObj);
// 通過標簽對象.事件名=function(){}
formObj.onsubmit = function(){
alert("動態(tài)注冊==開始驗證表單項,發(fā)現(xiàn)不合法");
return false;
}
}
</script>
</head>
<body>
<!--
onsubmit事件,return false。就會阻止表單提交
-->
<form action="http://www.baidu.com" onsubmit="return onsubmitFun();">
<input type="submit" value="靜態(tài)注冊"/>
</form>
<form action="http://www.baidu.com" id="form01">
<input type="submit" value="動態(tài)注冊"/>
</form>
</body>
</html>
DOM 模型
DOM 全稱是Document Object Model 文檔對象模型,把文檔中的標簽,屬性,文本,轉(zhuǎn)換成為對象來管理。
Document 對象的理解:
第一點:Document它管理了所有的Html文檔內(nèi)容。
第二點:document它是一種樹結構的文檔。有層級關系。
第三點:它讓我們把所有的標簽 都 對象化
第四點:我們可以通過document訪問所有的標簽對象。
什么是對象化??
我們基礎班已經(jīng)學過面向?qū)ο?。請問什么是對象化?br>舉例:
有一個人有年齡: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; // 起始標簽和結束標簽中間的內(nèi)容
}
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 )方法,通過給定的標簽名,創(chuàng)建一個標簽對象。tagName是要創(chuàng)建的標簽名
如果標簽對象有id屬性,優(yōu)先使用getElementById查找標簽對象
如果標簽沒有id屬性,只有name屬性,則使用getElementsByName方法進行查找
如果標簽即沒有id屬性,也沒有name屬性,最后才使用getElementsByTagName
getElementById和getElementsByName和getElementsByTagName都需要在頁面加載完成之后執(zhí)行。才能得到標簽對象。
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">
// 需求,當用戶點擊 【驗證】 按鈕的時候,幫我驗證一下,輸入框中的內(nèi)容是否合法
// 驗證的規(guī)則是:必須由字母,數(shù)字,下劃線組成,并且長度是5到12位
// 1、綁定單擊事件
function onclickFun(){
// 2 獲取輸入框中的內(nèi)容
// 當我們要操作一個標簽對象的時候。一定要先獲取到這個標簽對象。
var usernameObj = document.getElementById("username");
var usernameText = usernameObj.value;
// 獲取用來輸出驗證結果的span標簽對象
var spanObj = document.getElementById("usernameSpan");
// innerHTML表示起始標簽和結束標簽中的內(nèi)容
// 這個屬性,可讀可寫
// spanObj.innerHTML = "帥哥講的真細";
// 3 使用正則表達式去驗證
var patt = /^\w{5,12}$/;//驗證的規(guī)則是:必須由字母,數(shù)字,下劃線組成,并且長度是5到12位
// 正則對象有一個test方法??梢杂脕眚炞C一個字符串是否匹配正則表達式
// 匹配就返回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是根據(jù)name屬性查找返回對象的集合。
//這個集合的操作跟數(shù)組一樣
//這個集合中的元素順序剛好是它們在html頁面中,從上到下的順序
var hobbies = document.getElementsByName("hobby");
// checked屬性表示單選,復選框的選中狀態(tài)。
// 這個屬性可讀,可寫
for (var i = 0; i < hobbies.length; i++) {
hobbies[i].checked = true;
}
}
// 全不選
function checkNo(){
var hobbies = document.getElementsByName("hobby");
// checked屬性表示單選,復選框的選中狀態(tài)。
// 這個屬性可讀,可寫
for (var i = 0; i < hobbies.length; i++) {
hobbies[i].checked = false;
}
}
// 反選
function checkReverse(){
var hobbies = document.getElementsByName("hobby");
// checked屬性表示單選,復選框的選中狀態(tài)。
// 這個屬性可讀,可寫
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是通過指定的標簽名查找返回全部的標簽對象集合。
//這個集合的操作跟數(shù)組一樣
//這個集合中的元素順序跟他們在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(){
// 需求:通過代碼創(chuàng)建標簽:<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>
節(jié)點的常用屬性和方法
所謂 節(jié)點 ,就是前面講的標簽對象。
方法:
通過具體的元素節(jié)點調(diào)用
getElementsByTagName()
方法,獲取當前節(jié)點的指定標簽名孩子節(jié)點
appendChild( oChildNode )
方法,可以添加一個子節(jié)點,oChildNode是要添加的孩子節(jié)點
屬性:
childNodes屬性,獲取當前節(jié)點的所有子節(jié)點
firstChild屬性,獲取當前節(jié)點的第一個子節(jié)點
lastChild屬性,獲取當前節(jié)點的最后一個子節(jié)點
parentNode屬性,獲取當前節(jié)點的父節(jié)點
nextSibling屬性,獲取當前節(jié)點的下一個節(jié)點
previousSibling屬性,獲取當前節(jié)點的上一個節(jié)點
className屬性,用于獲取或設置標簽的class屬性值
innerHTML 屬性,表示獲取/設置起始標簽和結束標簽中的內(nèi)容
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節(jié)點
document.getElementById("btn01").onclick = function(){
alert( document.getElementById("bj").innerHTML );
}
//2.查找所有l(wèi)i節(jié)點
var btn02Ele = document.getElementById("btn02");
btn02Ele.onclick = function(){
alert( document.getElementsByTagName("li").length );
};
//3.查找name=gender的所有節(jié)點
var btn03Ele = document.getElementById("btn03");
btn03Ele.onclick = function(){
alert( document.getElementsByName("gender").length );
};
//4.查找#city下所有l(wèi)i節(jié)點
var btn04Ele = document.getElementById("btn04");
btn04Ele.onclick = function(){
//1 先查找id為city的標簽
//2 再查找city的li子元素
alert( document.getElementById("city").getElementsByTagName("li").length );
};
//5.返回#city的所有子節(jié)點
var btn05Ele = document.getElementById("btn05");
btn05Ele.onclick = function(){
//1 先查找id為city
alert( document.getElementById("city").childNodes.length );
//2 再通過city對象。獲取所有子節(jié)點
};
//6.返回#phone的第一個子節(jié)點
var btn06Ele = document.getElementById("btn06");
btn06Ele.onclick = function(){
//1 先查找id為phone的標簽對象
alert( document.getElementById("phone").firstChild.innerHTML );
//2 再根據(jù)phone標簽對象,查找第一個子節(jié)點
};
//7.返回#bj的父節(jié)點
var btn07Ele = document.getElementById("btn07");
btn07Ele.onclick = function(){
//1先查找id為bj的節(jié)點
alert( document.getElementById("bj").parentNode.innerHTML );
//2再通過bj節(jié)點找到父節(jié)點
};
//8.返回#android的前一個兄弟節(jié)點
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>
你手機的操作系統(tǒng)是?
</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節(jié)點</button></div>
<div><button id="btn02">查找所有l(wèi)i節(jié)點</button></div>
<div><button id="btn03">查找name=gender的所有節(jié)點</button></div>
<div><button id="btn04">查找#city下所有l(wèi)i節(jié)點</button></div>
<div><button id="btn05">返回#city的所有子節(jié)點</button></div>
<div><button id="btn06">返回#phone的第一個子節(jié)點</button></div>
<div><button id="btn07">返回#bj的父節(jié)點</button></div>
<div><button id="btn08">返回#android的前一個兄弟節(jié)點</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>