1. 程式人生 > >js學習筆記(比較全)

js學習筆記(比較全)

什麼是JavaScript?

1. JavaScript 是一種客戶端指令碼語言(指令碼語言是一種輕量級的程式語言)。

2. JavaScript 通常被直接嵌入 HTML 頁面。

3. JavaScript 是一種解釋性語言(就是說,程式碼執行不進行預編譯)。

特點:

1. 弱型別

2. 基於物件。(因為面向物件需要具有封裝、繼承、多型的特徵)





在客戶端瀏覽器上執行的指令碼:

1. JavaScript 2. VBscript 3 applet (需要安裝JDK)





ECMAScript總稱

|

|-- JavaScript

|

|-- ActionScript

|

|-- ScriptEase





JavaScript語言中包含三個核心:ECMAScript基本語法、DOM、BOM





JavaScript是基於物件的指令碼語言。





在HTML中如何使用JavaScript

===============================================

*1. 使用<script></script>標籤:

屬性:

charset(可選)字符集設定、

defer(可選執行順序)值:defer、

language(已廢除)、

src(可選)使用外部的js指令碼檔案

type(必選)型別:值:text/javascript





<script type="text/javascript">

<!--

javaScript語言

//-->

</script>





2. 在html標籤的事件中,超級連結裡。

<button onclick="javaScript語言"></button>

<a href="javascript:alert('aa');alert('bb')">點選</a>





3. 外部匯入方式(推薦):

<script type="text/javascript" src="my.js"></script>







JavaScript的語法:

===========================================

1.區分大小寫:變數名、函式名、運算子以及其他一切東西都是區分大小寫的。





2.他和php一樣屬於弱型別語言。





3.每行結尾的分號可有可無。(js中的每條語句之間的分割符可以是回車換行也可以是";"分號(推薦))





4.指令碼註釋:

// 單行註釋

/* 多行註釋 */





5.括號表示程式碼塊:{}





6.變數的定義:使用var關鍵字來宣告。

變數的命名規範是:字母數字,$符和下劃線構成,但是不可以以數字開始。

變數名不可以使用關鍵字.





typeof函式獲取一個變數的型別:

* undefined - 如果變數是 Undefined 型別的

* boolean - 如果變數是 Boolean 型別的

* number - 如果變數是 Number 型別的 (整數、浮點數)

* string - 如果變數是 String 型別的 (採用""、 '')

* object - 如果變數是一種引用型別或 Null 型別的

如:new Array()/ new String()...

* funciton -- 函式型別



7.JavaScript的資料型別:

undefined 型別

null 型別(物件)

boolean 型別

number 型別

八進位制數和十六進位制數 012

浮點數

特殊的 Number 值

string 型別

var s = "hello";

document.write(s+"<br/>");

document.write(s[1]+"<br/>"); //使用下標可以取出對應的字元

document.write(s.length+"<br/>");//求長度



object引用型別

引用型別通常叫做類(class),也就是說,遇到引用值,所處理的就是物件。

Object 物件自身用處不大,不過在瞭解其他類之前,還是應該瞭解它。

因為 ECMAScript 中的 Object 物件與 Java 中的 java.lang.Object 相似,

ECMAScript 中的所有物件都由這個物件繼承而來,Object 物件中的所有屬性

和方法都會出現在其他物件中,所以理解了 Object 物件,就可以更好地理解其他物件。



8. 型別轉換:

使用:Number()、parseInt() 和parseFloat() 做型別轉換

Number()強轉一個數值(包含整數和浮點數)。

*parseInt()強轉整數,

*parseFloat()強轉浮點數



函式isNaN()檢測引數是否不是一個數字。 is not a number



ECMAScript 中可用的 3 種強制型別轉換如下:

Boolean(value) - 把給定的值轉換成 Boolean 型;

Number(value) - 把給定的值轉換成數字(可以是整數或浮點數);

String(value) - 把給定的值轉換成字串;





JavaScript的運算子

=====================================================================

1. 一元運算子

* delete:用於刪除物件中屬性的 如:delete o.name; //刪除o物件中的name屬性

void: void 運算子對任何值返回 undefined。沒有返回值的函式真正返回的都是 undefined。

* ++ --

一元加法和一元減法

2. 位運算子

位運算 NOT ~

位運算 AND &

位運算 OR |

位運算 XOR ^ (不同為1,相同則為0)

左移運算 <<

右移運算 >>

3. 邏輯運算子

邏輯 NOT ! 運算子 非

邏輯 AND && 運算子 與

邏輯 OR || 運算子 或

4. 乘性運算子:*( 乘) /(除) %(取模)求餘

5. 加性運算子: + -

*其中+號具有兩重意思:字串連線和數值求和。

就是加號”+“兩側都是數值則求和,否則做字串連線

6. 關係運算符 > >= < <=

7. 等性運算子 == === != !==

8. 條件運算子 ? : (三元運算子)

9. 賦值運算子 = += -= *= /= %= >>= <<=

10 逗號運算子

用逗號運算子可以在一條語句中執行多個運算。

var iNum1=1, iNum2=2, iNum3=3;









javaScript(語句流程控制)

====================================================================

1. 判斷語句 if語句; if... else ... if ... else if ... else...





2. 多分支語句: switch(){。 case :。。。。}

switch (i) {

case 20: alert("20");

break;

case 30: alert("30");

break;

case 40: alert("40");

break;

default: alert("other");

}

3. 迴圈語句(迭代語句)

for:



while



do...while



*for-in 語句: 語句是嚴格的迭代語句,用於列舉物件的屬性。

var a = [10,20,30,40,50];

//迭代的是陣列的下標。

for(i in a){

document.write(a[i]);

}

//輸出: 1020304050



4. break 和 continue 語句對迴圈中的程式碼執行提供了更嚴格的控制。




5. *with 語句用於設定程式碼在特定物件中的作用域。



//擴充知識:

1. 在網頁文件中獲取一個節點物件(HTML標籤)

document.getElementById("mid"); //獲取標籤id屬性值為mid的節點物件



2. 定時相關函式:

setTimeout(vCode, iMilliSeconds [, sLanguage]) -- 單次定時執行指定函式

clearTimeout(iTimeoutID) -- 取消上面的單次定時



setInterval(vCode, iMilliSeconds [, sLanguage]) --無限次定時執行指定函式

clearInterval(iIntervalID)-- 取消上面的多次定時





==================================================

JS的第一天作業

=============================================

一、理論作業:

1. 什麼是JavaScript?

2. 在HTML中嵌入JavaScript的方法有幾種?

3. JavaScript的常用型別都有哪些?

4. 常用的JavaScript的型別轉換函式有那兩個?

5. 我們使用哪個函式判斷是否不是一個整數?

6. JavaScript語言的運算子都有哪些?





二、程式碼題:

1. 參考課程程式碼做一個簡單的計算器

2. (選做)一個倒計時的按鈕(10,9,8,7,...這是是個灰色不可點選的,當為0是會換成同意字樣,並可點選。)

3. (選做) 做一個倒計時(時 分 秒)。可選帶暫停效果





三、預習作業:

1. JavaScript的函式如何定義和呼叫。

2. 常用的系統函式都有哪些。

3. 物件的應用與宣告。

===================end===========================





=================================================

JavaScript 第二天內容:

=================================================





一、JavaScript的函式:

--------------------------------------------------------

標準格式: function 函式名([引數列表..]){

函式體。。。

[return 返回值;]

}



JavaScript三種定義函式方法:

*第一種是使用function語句定義函式

如上面格式



第二種是使用Function()建構函式來定義函式(不常用)

var 函式名 = new Function(“引數1”,”引數2”,”引數3”……”函式體”);

如:

var 函式名 = new Function(”x”,”y”,”var z=x+y;return z;”);





*第三種是在表示式中定義函式

var 函式名 = function(引數1,引數2,…){函式體};

//例如:

//定義

var add = function(a,b){

return a+b;

}

//呼叫函式

document.write(add(50,20));



arguments 物件

在函式程式碼中,使用特殊物件 arguments,開發者無需明確指出引數名,就能訪問它們。

例如,在函式 sayHi() 中,第一個引數是 message。用 arguments[0]

也可以訪問這個值,即第一個引數的值(第一個引數位於位置 0,

第二個引數位於位置 1,依此類推)。



關於變數和引數問題:

函式外面定義的變數是全域性變數,函式內可以直接使用。

在函式內部沒有使用var定義的=變數則為全域性變數,

*在函式內使用var關鍵字定義的變數是區域性變數,即出了函式外邊無法獲取。

js函式定義的引數沒有預設值(目前只有最新的火狐瀏覽器支援)



二、系統中常用的內建函式:

------------------------------------------------------

escape()
//字串編碼

unescape()
//字串反編碼

*eval()
//將引數字串作為指令碼程式碼來執行。

*isNaN()
// is not a number (不是一個數值)

*parseInt()

*parseFloat()







三、JavaScript的物件的定義和使用

-------------------------------------------------------

1.使用建構函式建立內建物件

var myObject = new Object();

myObject.name = “lijie”;

myObject.age = 20;

myObject.say = function(){...}



2.直接建立自定義物件

var 物件名 = {屬性名1:屬性值,屬性名2:屬性值2,…….}



*3.使用自定義建構函式建立物件

function pen(name,color,price){

//物件的name屬性

this.name = name;

//物件的color屬性

this.color = color;

//物件的piece屬性

this.price = price;

//物件的say方法

this.say = function(){};

}



var pen = new pen(“鉛筆”,”紅色”,20);

pen.say();

--------------------------------------------------------------

測試型別:

1.typeof() //global物件的其中一個方法,typeof()

2.物件.constructor; //檢視當前物件的建構函式是誰





if(arr.constructor==Array){

alert("陣列"); //陣列推薦用這種方法,因為typeof得到是object

}





四、常用技巧函式:

---------------------------------------------------------------

1. HTML的標籤(節點)操作

document.write(""); //輸出的

document.getElementById("id名"); //獲取html頁面標籤中,標籤id屬性等於此值的物件。

如:var id = document.getElementById("hid"); //獲取id值為hid的標籤物件



document.getElementsByTagName("標籤名"); //獲取當前文件執行的標籤物件



html標籤物件的操作:

標籤物件.innerHTML="內容";//在標籤物件內放置指定內容

標籤物件.style.css屬性名="值" //改變標籤物件的樣式。

示例:id.style.color="red";

注意:屬性名相當於變數名,所以css屬性名中的減號要去掉,將後面的首字母大寫。

如:font-size(css)---> fontSize(JS屬性)

標籤物件.value;
//獲取標籤物件的value值

標籤物件.value=”值“;//設定標籤物件的value值




--------------------------------------------------

JS的第二天作業

--------------------------------------------------

一、理論作業:

1. JavaScript三種定義函式方法?

2. arguments物件的理解?

3. 簡述JS中全域性變數和區域性變數的作用域?

4. 系統中常用的內建函式有哪些?





二、程式碼題:

1. 作業全選/全不選/反選的例項

2. 做一個檔案進度條的特效。

3. 使用自定義建構函式建立物件

4. (選做) 做一個樹形選單的點選效果



三、預習作業:

1. JavaScript中常用內建物件都有哪些?

2. 如何使用Date獲取當前時間。

3. 如何建立一個數組物件。

4. 如何使用物件的基本操作for..in。

===================end==========================





=================================================

JavaScript 第三天內容:(內建物件)

=================================================

一、for…in語句

----------------------------------------

for(var i in window){

document.write(i+”----”+window[i]);

}

這種語句可以遍歷物件中的所有屬性或陣列中的所有元素。





二、with語句

--------------------------------------------

如果使用with語句,就可以簡化物件屬性呼叫的層次。

document.write(‘test1’);

document.write(‘test2’);

document.write(‘test3’);

可以使用with來簡化:

with(document){

write(‘test1’);

write(‘test2’);

write(‘test3’);

}





三、JavaScript內建物件

-----------------------------------------------

* Array(陣列)

var a= new Array(); //建立一個空陣列

a = new Array(10); //建立一個數組單元為10個的陣列。

a = new Array(10,20,30);//建立一個指定陣列單元的陣列。



a=['a','b','c','d']; //快捷定義陣列

常用屬性:

length--獲取長度。



常用方法:

toString() 把陣列轉換為字串,並返回結果。

sort() 對陣列的元素進行排序

join() 把陣列的所有元素放入一個字串。元素通過指定的分隔符進行分隔。

pop() 刪除並返回陣列的最後一個元素

push() 向陣列的末尾新增一個或更多元素,並返回新的長度。





。。。。。



* Boolean 布林值包裝類物件

方法:toSource()
返回該物件的原始碼。

toString() 把邏輯值轉換為字串,並返回結果。

valueOf() 返回 Boolean 物件的原始值。

* Date

var dd = new Date();



getDate() 從 Date 物件返回一個月中的某一天 (1 ~ 31)。

getDay() 從 Date 物件返回一週中的某一天 (0 ~ 6)。

getMonth() 從 Date 物件返回月份 (0 ~ 11)。

getFullYear()
從 Date 物件以四位數字返回年份。

getYear() 請使用 getFullYear() 方法代替。

getHours() 返回 Date 物件的小時 (0 ~ 23)。

getMinutes() 返回 Date 物件的分鐘 (0 ~ 59)。

getSeconds() 返回 Date 物件的秒數 (0 ~ 59)。

getMilliseconds()
返回 Date 物件的毫秒(0 ~ 999)。

getTime() 返回 1970 年 1 月 1 日至今的毫秒數。

同上還有很多set方法用來設定。



* Math 物件用於執行數學任務。方法是靜態的。

abs(x) 返回數的絕對值。

ceil(x) 對數進行上舍入。

floor(x) 對數進行下舍入。

random() 返回 0 ~ 1 之間的隨機數。

round(x) 把數四捨五入為最接近的整數。



max(x,y) 返回 x 和 y 中的最高值。

min(x,y) 返回 x 和 y 中的最低值。



* Number

toString();

toFixed 把數字轉換為字串,結果的小數點後有指定位數的數字。



* String 子串處理物件

anchor() 建立 HTML 錨。

*charAt() 返回在指定位置的字元。


charCodeAt()返回在指定的位置的字元的 Unicode 編碼。

*indexOf() 檢索字串。

*lastIndexOf()
從後向前搜尋字串。

match() 找到一個或多個正在表示式的匹配。

*replace() 替換與正則表示式匹配的子串。

search() 檢索與正則表示式相匹配的值。

slice() 提取字串的片斷,並在新的字串中返回被提取的部分。

split() 把字串分割為字串陣列。

substr() 從起始索引號提取字串中指定數目的字元。

*substring() 提取字串中兩個指定的索引號之間的字元。

toLocaleLowerCase()
把字串轉換為小寫。

toLocaleUpperCase()
把字串轉換為大寫。

*toLowerCase()
把字串轉換為小寫。

*toUpperCase()
把字串轉換為大寫。

* RegExp

exec()正則匹配

test()

match()

* Global

escape(string) -- 可對字串進行編碼

unescape(string) -- 函式可對通過 escape() 編碼的字串進行解碼。

encodeURI(URIstring) -- 函式可把字串作為 URI 進行編碼。

decodeURI(URIstring) -- 函式可對 encodeURI() 函式編碼過的 URI 進行解碼。

*eval(string) -- 函式可計算某個字串,並執行其中的的 JavaScript 程式碼。

getClass(javaobj) -- 函式可返回一個 JavaObject 的 JavaClass。

*isNaN(x) -- 函式用於檢查其引數是否是非數字值。

Number(object) --函式把物件的值轉換為數字。

*parseFloat(string) -- 函式可解析一個字串,並返回一個浮點數。

*parseInt(string, radix)





---------------------------------------------

四、 JS的第三天作業

---------------------------------------------

一、理論作業:

1. JavaScript中常用內建物件都有哪些?

3. 如何建立一個數組物件方式有幾種。





二、程式碼題:

1. 做一個註冊的表單驗證,

2. 實時問候:如:早上好!

3. 給你一個日期"2013-06-01 12:24:36"的時間戳值。

4. 顯示中文的星期幾。

5. 做一個隨機點名系統(點名多次,也不會重複!);



三、預習作業:

1. JavaScript中常用事件都有哪些?



===================end==========================





=================================================

JavaScript 第四天內容:(事件)

=================================================

事件處理

一、事件源: 任何一個HTML元素(節點) body, div , button p, a, h1 .......

二、事件: 你的操作

滑鼠:

* click 單擊

dblclick 雙擊

contextmenu (在body) 文字選單(滑鼠右鍵使用)

要想遮蔽滑鼠右鍵使用return false

window.document.oncontextmenu=function(ent){...}



* mouseover 放上(移入)

* mouseout 離開(移出)

mousedown 按下

mouseup 擡起

* mousemove 移動

鍵盤:

keypress 鍵盤事件

keydown 按下





文件:(主要使用在body標籤中)

* load 載入

unload 關閉(為了相容可使用下面函式)

beforeunload 關閉之前



表單:

* focus 焦點

* blur 失去焦點

* submit 提交事件


* change 改變(如下拉框選擇事件)

其它:

* scroll 滾動事件(常用延遲載入、瀑布流技術)

window.onscroll=function(){

document.documentElement.scrollTop;//獲取滾動條的上距離

document.documentElement.scrollLeft;//滾動條的左距離

}



selectd 事件



。。。。





三、事件處理程式

使用一個匿名或回撥函式


有三種方法加事件


第一種:

格式: <tag on事件="事件處理程式" />

*第二種:

<script>

物件.on事件=事件處理程式

</script>

第三種:(火狐不相容)

<script for="事件源ID" event="on事件">事件處理程式</script>


事件物件:


屬性:

1. srcElement

2. keyCode 鍵盤值



事件 event window.event

1. srcElement 代表事件源物件

2. keyCode 事件發生時的鍵盤碼 keypress , keydown keyup

3. clientX, clientY 座標位置

4. screenX, screenY

5. returnValue

6. cancelBubble;




//為頁面新增滑鼠右點選事件

window.document.oncontextmenu=function(ent){

//相容IE和火狐瀏覽器相容

var event=ent || window.event;

//獲取事件座標位置

var x=event.clientX;

var y=event.clientY;

...

}

/*********************物件新增事件*******************/

function addEvent(obj,type,fun){

obj=$(obj);

if(obj.addEventListener){

obj.addEventListener(type,fun); //FF

return true;

}else if(obj.attachEvent){

return obj.attachEvent("on"+type,fun); //IE

}else{

return false;

};

};

/*********************物件刪除事件*******************/

function delEvent(obj,type,fun){

obj=$(obj);

if(obj.addEventListener){

obj.removeEventListener(type,fun);

return true;

}else if(obj.attachEvent){

obj.detachEvent("on"+type,fun);

return true;

}else{

return false;

};

};





document.getElementById("one").offsetHeight; //獲取one對應物件的高度

obj.offsetTop 指 obj 距離上方或上層控制元件的位置,整型,單位畫素。

obj.offsetLeft 指 obj 距離左方或上層控制元件的位置,整型,單位畫素。

obj.offsetWidth 指 obj 控制元件自身的寬度,整型,單位畫素。

obj.offsetHeight 指 obj 控制元件自身的高度,整型,單位畫素。



document.all ? 'IE' : 'others':在IE下document.all值為1,而其他瀏覽器下的值為0;

=============================================

第四天:

作業,1. 完善註冊的表單驗證提示,

2. 橫向的選單特效

3. 為圖片輪換播放新增按鈕

5.(選做)滾動圖片替換

6.(選做)鍵盤事件的處理(通過鍵盤事件移動圖層)



預習:1.JavaScript中的其他事件:(滾動事件,鍵盤事件。。)

2.常用的BOM都有哪些?

3.HTML中的DOM都有哪些?





第五天 講解BOM

=============================================================================

一、BOM

---------------------------------------

<button onclick="window.location=''">跳轉</button>

1. window物件

常用的屬性:

*document :對 Document 物件的只讀引用

*history
:對 History 物件的只讀引用。

*location:用於視窗或框架的 Location 物件

Navigator: 對 Navigator 物件的只讀引用

*parent: 返回父視窗。

length: 設定或返回視窗中的框架數量。

Screen: 對 Screen 物件的只讀引用

status: 設定視窗狀態列的文字。

top: 返回最頂層的先輩視窗。



常用方法:

alert() 顯示帶有一段訊息和一個確認按鈕的警告框。

confirm() 顯示帶有一段訊息以及確認按鈕和取消按鈕的對話方塊。

prompt() 顯示可提示使用者輸入的對話方塊。



close() 關閉瀏覽器視窗。


open() 開啟一個新的瀏覽器視窗或查詢一個已命名的視窗。

scrollTo() 把內容滾動到指定的座標。



setTimeout() 在指定的毫秒數後呼叫函式或計算表示式。

clearTimeout() 取消由 setTimeout() 方法設定的 timeout。

setInterval() 按照指定的週期(以毫秒計)來呼叫函式或計算表示式。

clearInterval() 取消由 setInterval() 設定的 timeout。





2. Navigator 物件

Navigator 物件包含的屬性描述了正在使用的瀏覽器。可以使用這些屬性進行平臺專用的配置。

常用屬性:

with(document) {

write ("你的瀏覽器資訊:<ul>");

write ("<li>程式碼:"+navigator.appCodeName+"</li>");

write ("<li>名稱:"+navigator.appName+"</li>");

write ("<li>版本:"+navigator.appVersion+"</li>");

write ("<li>語言:"+navigator.language+"</li>");

write ("<li>編譯平臺:"+navigator.platform+"</li>");

write ("<li>使用者表頭:"+navigator.userAgent+"</li>");

write ("</ul>");

}







3. Screen 物件包含有關客戶端顯示螢幕的資訊。





常用屬性:

document.write( "螢幕寬度:"+screen.width+"px<br />" );

document.write( "螢幕高度:"+screen.height+"px<br />" );

document.write( "螢幕可用寬度:"+screen.availWidth+"px<br />" );

document.write( "螢幕可用高度:"+screen.availHeight+"px" );



參考瞭解其他屬性資訊獲取方式

網頁可見區域寬: document.body.clientWidth

網頁可見區域高: document.body.clientHeight

網頁可見區域寬: document.body.offsetWidth (包括邊線的寬)

網頁可見區域高: document.body.offsetHeight (包括邊線的高)

網頁正文全文寬: document.body.scrollWidth

網頁正文全文高: document.body.scrollHeight

網頁被捲去的高: document.body.scrollTop

網頁被捲去的左: document.body.scrollLeft

網頁正文部分上: window.screenTop

網頁正文部分左: window.screenLeft

螢幕解析度的高: window.screen.height

螢幕解析度的寬: window.screen.width

螢幕可用工作區高度: window.screen.availHeight

螢幕可用工作區寬度: window.screen.availWidth



4. History 物件包含使用者(在瀏覽器視窗中)訪問過的 URL。





5. Location 物件包含有關當前 URL 的資訊。





//獲取頁面中第二form表單中,一個username輸入框的值(7種方式)

//alert(document.forms[1].username.value);

alert(document.myform.username.value);

//alert(document.forms.myform.username.value);

//alert(document.forms.item(1).username.value);

//alert(document.forms['myform'].username.value);

//alert(document['myform'].username.value);

//alert(document.forms.item('myform').username.value); //火狐不相容









第六天 講解DOM

=============================================================================


一、基本概念

--------------------------------------------------------------------------


HTML DOM 定義了訪問和操作HTML文件的標準方法。

HTML DOM 把 HTML 文件呈現為帶有元素、屬性和文字的樹結構(節點樹)。

DOM 被分為不同的部分:

1.Core DOM

定義了一套標準的針對任何結構化文件的物件

2.XML DOM

定義了一套標準的針對 XML 文件的物件

3.HTML DOM

定義了一套標準的針對 HTML 文件的物件。



節點:根據 DOM,HTML 文件中的每個成分都是一個節點。

DOM 是這樣規定的:

>整個文件是一個文件節點

>每個 HTML 標籤是一個元素節點

>包含在 HTML 元素中的文字是文字節點

>每一個 HTML 屬性是一個屬性節點

>註釋屬於註釋節點



節點彼此間都存在關係。

>除文件節點之外的每個節點都有父節點。

>大部分元素節點都有子節點。

>當節點分享同一個父節點時,它們就是同輩(同級節點)。

>節點也可以擁有後代,後代指某個節點的所有子節點,或者這些子節點的子節點

>節點也可以擁有先輩。先輩是某個節點的父節點,或者父節點的父節點



查詢並訪問節點

你可通過若干種方法來查詢您希望操作的元素:

>通過使用 getElementById() 和 getElementsByTagName() 方法

>通過使用一個元素節點的 parentNode、firstChild 以及 lastChild childNodes屬性



節點資訊

每個節點都擁有包含著關於節點某些資訊的屬性。這些屬性是:

nodeName(節點名稱)

nodeValue(節點值)

nodeType(節點型別)





nodeName 屬性含有某個節點的名稱。

元素節點的 nodeName 是標籤名稱

屬性節點的 nodeName 是屬性名稱

文字節點的 nodeName 永遠是 #text

文件節點的 nodeName 永遠是 #document











二、HTML DOM 物件參考

----------------------------------------------------------------------

Document: 代表整個 HTML 文件,可被用來訪問頁面中的所有元素

常用集合屬性:forms

Anchor : 代表 <a> 元素

Area : 代表影象對映中的 <area> 元素

Base : 代表 <base> 元素

Body : 代表 <body> 元素

Button : 代表 <button> 元素

Event : 代表某個事件的狀態

Form : 代表 <form> 元素

Frame : 代表 <frame> 元素

Frameset: 代表 <frameset> 元素

Iframe : 代表 <iframe> 元素

Image : 代表 <img> 元素

Input button : 代表 HTML 表單中的一個按鈕

Input checkbox
: 代表 HTML 表單中的複選框

Input file : 代表 HTML 表單中的檔案上傳

Input hidden : 代表 HTML 表單中的隱藏域

Input password : 代表 HTML 表單中的密碼域

Input radio : 代表 HTML 表單中的單選按鈕

Input reset : 代表 HTML 表單中的重置按鈕

Input submit : 代表 HTML 表單中的確認按鈕

Input text : 代表 HTML 表單中的文字輸入域(文字框)

Link : 代表 <link> 元素

Meta : 代表 <meta> 元素

Object : 代表 <Object> 元素

Option : 代表 <option> 元素

Select : 代表 HTML 表單中的選擇列表

Style : 代表單獨的樣式宣告

Table : 代表 <table> 元素

TableData : 代表 <td> 元素

TableRow : 代表 <tr> 元素

Textarea : 代表 <textarea> 元素



第七天 繼續講解DOM(重點講XML DOM)

====================================================================

一、HTML的DOM

---------------------------------------------------------

Object : 代表 <Object> 元素

Option : 代表 <option> 元素

Select : 代表 HTML 表單中的選擇列表

Style : 代表單獨的樣式宣告

Table : 代表 <table> 元素

TableData : 代表 <td> 元素

TableRow : 代表 <tr> 元素

Textarea : 代表 <textarea> 元素



二、XML的DOM

---------------------------------------------------------

DOM (Document Object Model) 文件物件模型

1. document 文件 HTML XML 檔案 (標記語言)

<body>

<div>

<!-- -->

<a href="#">wwww</a>

</div>

</body>

節點:

將文件想成一個倒樹, 每一個部分(根、元素、文字(內容), 屬性, 註釋)都是一節點。

根據 DOM,HTML 文件中的每個成分都是一個節點。





DOM 是這樣規定的:

1. 整個文件是一個文件節點(根節點)

2. 每個 HTML 標籤是一個元素節點

3. 包含在 HTML 元素中的文字是文字節點

4. 每一個 HTML 屬性是一個屬性節點

5. 註釋屬於註釋節點



2. 父、子和同級節點

節點樹中的節點彼此之間都有等級關係。





父、子和同級節點用於描述這種關係。父節點擁有子節點,位於相同層級上的子節點稱為同級節點(兄弟或姐妹)。

1. 在節點樹中,頂端的節點成為根節點

2. 根節點之外的每個節點都有一個父節點

3. 節點可以有任何數量的子節點

4. 葉子是沒有子節點的節點

5. 同級節點是擁有相同父節點的節點



只要知道一個節點, 按關係找到其它節點

父節點: parentNode

子節點(第一個, 最後一個) childNodes firstChild lastChild

同胞(同輩)節點 (上一個, 下一個)nextSibling previousSibling





3。 獲取節點的方式:

array getElementsByTagName("節點名"); //獲取所對應節點名(所有),返回的是陣列

object getElementById("id名"); //獲取id名的唯一節點物件



示例:(找節點)

document.getElementsByTagName("li"); //所有所有li節點

document.getElementById("lid"); //獲取id值為lid的唯一節點

document.getElementById("uid").getElementsByTagName("li");

//獲取id值為uid中所有li子節點

document.getElementsByTagName("ul")[0].getElementsByTagName("li");

//獲取第一個ul節點中所有li子節點



獲取到的標記名(多個)、 id(唯一)、 name(多個)



4. 每個節點中的內容

節點型別nodeType、節點名nodeName,節點值nodeValue



節點名nodeName:

nodeName 是隻讀的

元素節點的 nodeName 與標籤名相同

屬性節點的 nodeName 是屬性的名稱

文字節點的 nodeName 永遠是 #text

文件節點的 nodeName 永遠是 #document



節點值nodeValue

元素節點的 nodeValue 是 undefined

文字節點的 nodeValue 是文字自身

屬性節點的 nodeValue 是屬性的值



nodeType(節點型別)

元素型別
節點型別

元素 1

屬性 2

文字 3

註釋 8

文件 9







4. Object 物件 (HTML元素 轉成的物件(js物件))

注意: 如果使用js操作HTML文件, 就需要選將HTML文件結構轉成Js物件

a. 操作屬性:

nodeName(節點名稱)

nodeValue(節點值)

nodeType(節點型別)

其他屬性:(針對於節點)

childNodes 返回節點到子節點的節點列表。

firstChild 返回節點的首個子節點。

lastChild 返回節點的最後一個子節點。

nextSibling 返回節點之後緊跟的同級節點。

previousSibling 屬性可返回某節點之前緊跟的節點(處於同一樹層級)


parentNode 返回節點的父節點。

textContent設定或返回節點及其後代的文字內容。



b. 操作內容

innerText(IE) textContent(FF) //獲取的是顯示的內容,不包含HTML標籤

innerHTML //獲取的是顯示的內容,會包含HTML

outerText

outerHTML

表單

value

c. 操作樣式

aobj.style.backgroundColor="red";

aobj.style.fontSize="3cm";

className

aobj.className="test";

aobj.className+=" demo";

aobj.className="";

e. 操作節點:

appendChild()
向節點的子節點列表的結尾新增新的子節點。

cloneNode()
複製節點。

removeChild()
刪除(並返回)當前節點的指定子節點。

replaceChild()
用新節點替換一個子節點。

hasAttributes() 判斷當前節點是否擁有屬性。

hasChildNodes() 判斷當前節點是否擁有子節點。

insertBefore() 在指定的子節點前插入新的子節點。





f. 建立節點:

* createElement() 建立元素節點

createAttribute() 來建立屬性節點 可以:元素節點.屬性名=值;

createTextNode() 來建立新的文字節點 可以:元素節點.innerHTML=文字內容;





有了以上三點的操作之前先轉成物件

轉成物件的兩種形式:

1. 標記名(多個)、 id(唯一)、 name(多個)

document中的三個方法

var objs=document.getElementsByTagName("div"); //獲取多個

var objs=document.getElementById("one");
//獲取一個

var objs=document.getElementsByName("two");













==================================================================

1.Document



2.Element



3.Event



4.HTMLElement



5.Node



6.XMLHttpRequest





第九天 Ajax

===========================================================

AJAX

---------------------------------------

var xmlhttp;



1. 建立請求物件

if(window.XMLHttpRequest){

// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}else{

// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}



2. 設定回撥函式(監聽)

xmlhttp.onreadystatechange=函式名;



xmlhttp.onreadystatechange=function(){

函式體。。。

}





3. 初始化:

xmlhttp.open("GET","gethint.php?q="+str,true); //非同步以get方式傳送到gethint.php



4. 傳送:

xmlhttp.send();





其中:xmlhttp請求物件:

**屬性:

*readyState //請求狀態:0,1,2,3,4

*responseText//響應內容

responseXML //xml響應物件

*status
//瀏覽器響應狀態:200正常, 404 請求地址不存在 ,,

statusText //狀態內容

*onreadystatechange //回撥函式屬性



方法:

abort() //取消當前響應,關閉連線並且結束任何未決的網路活動。

getAllResponseHeaders() //把 HTTP 響應頭部作為未解析的字串返回。

getResponseHeader() //返回指定的 HTTP 響應頭部的值

*open()
//初始化 HTTP 請求引數

*send() //傳送 HTTP 請求,使用傳遞給 open() 方法的引數

*setRequestHeader() //向一個開啟但未傳送的請求設定或新增一個 HTTP 請求。





模擬POST提交程式碼:

xmlhttp.open("POST","ajax_test.php",true);

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send("fname=Bill&lname=Gates");