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 οnclick="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.οncοntextmenu=function(ent){...}



* mouseover 放上(移入)

* mouseout 離開(移出)

mousedown 按下

mouseup 擡起

* mousemove 移動

鍵盤:

keypress 鍵盤事件

keydown 按下





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

* load 加載

unload 關閉(爲了兼容可使用下面函數)

beforeunload 關閉之前



表單:

* focus 焦點

* blur 失去焦點

* submit 提交事件


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

其它:

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

window.οnscrοll=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.οncοntextmenu=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 οnclick="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");


發佈了37 篇原創文章 · 獲贊 33 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章