一.JS 簡史
什么是DOM(文檔對象模型)?


JS 版本進化????????
1995年------Netscape公司與Sun公司合作開發(fā)------Netscape ?Navigator2 瀏覽器-------JS1.0版本;
? ? ? ? ? ? ?------微軟公司發(fā)布VBScript------IE3瀏覽器------同時以JScript為名發(fā)布了JS的一個版本;
面對微軟的競爭,那倆公司聯(lián)合ECMA(歐洲計算機制造商協(xié)會)對JS語言進行了標(biāo)準(zhǔn)化;
1996年------JS,ECMAScript,JScript都穩(wěn)了,Netscape和微軟在各自第三版瀏覽器中都不同程度地支持------JS1.1版本

1997年6月------Netscape ?Navigator4發(fā)布
? ? ? ? ? ?10月------IE4發(fā)布
瀏覽器戰(zhàn)爭,版本改進,DOM擴展,使JS發(fā)揮發(fā)揮空間變大,新名詞產(chǎn)生:DHTML(動態(tài)HTML)。

不幸的是,那倆瀏覽器制造商雖然目標(biāo)一樣,但是實現(xiàn)方法完全不一樣(我們不一樣),即兩種不兼容的DOM。





二.JS語法復(fù)習(xí)
1.準(zhǔn)備工作

2.JS語句

3.注釋
單行注釋://
多行注釋:/* ?*/
注意:在HTML中有一種注釋方式是<!-- ?-->,這個在JS中只適用于單行。

4.變量


5.數(shù)據(jù)類型
1.字符串------字符串之中的特殊符號要用\\來轉(zhuǎn)義(String);
2.數(shù)值------可以是浮點數(shù)(Number);
3.布爾值(Boolean),

4.數(shù)組(Array),


5.對象(Object),

6.操作
1.算術(shù)操作符
=------切記是賦值操作;
+------可以做加法運算,也可以?拼接 ?字符串;
+=------快捷操作,完成加法和賦值;
2.條件語句


比較操作符:>,<,>=,<=,

邏輯操作符:&& ?,|| ? ?,?。?/p>

3.循環(huán)語句

while循環(huán)

do...while循環(huán)

for 循環(huán)

7.函數(shù)




變量的作用域

8.對象


JS提供了很多預(yù)先定義的對象,這些可以拿來就用的對象稱為內(nèi)建對象。

三.DOM
D------document(文檔)

O------Object

M------Model,Map

節(jié)點樹------元素節(jié)點,文本節(jié)點,屬性節(jié)點

元素節(jié)點

文本節(jié)點

屬性節(jié)點

獲取元素------DOM ?API提供三種方法,分別是通過元素ID,標(biāo)簽名字和類名字來獲取。
1.getElementById()

2.getElementsByTagName()


3.getElementsByClassName()



階段小結(jié)

獲取和設(shè)置屬性
1.getAttribute()

2.setAttribute()


四.案例研究:JS圖片庫
知識點:事件處理函數(shù)


遇到問題:當(dāng)把函數(shù)寫在window.onload=function(){ }中時,由于作用域的問題,事件處理函數(shù)沒有識別到函數(shù),會報錯;假如在 onload中綁定點擊事件,便可以識別,這都是由于JS中作用域的問題。
childNodes屬性

nodeType屬性

nodeValue

firstChild和lastChild

小結(jié)

五.最佳實踐

新概念:偽協(xié)議

最佳實踐方案:分離JS------對象檢測

------瀏覽器嗅探技術(shù)(不怎么樣,被淘汰)
性能考慮
1.盡量減少訪問DOM和盡量減少標(biāo)記;
2.合并和放置腳本,減少加載頁面時發(fā)送的請求數(shù)量;
3.壓縮腳本(包括修改局部變量名長度,去除沒有必要的空格和注釋)。

六.案例研究:圖片庫改進版



DOM Core和HTML-DOM


實用的代碼片段

七.動態(tài)創(chuàng)建標(biāo)記

createElement方法------只能創(chuàng)建元素節(jié)點

appendChild方法
以上兩個方法是創(chuàng)建元素節(jié)點并把它接到DOM樹上
createTextNode------創(chuàng)建文本節(jié)點,和createElement用法一樣
insertBefore()------在已有元素前插入一個新元素

實用代碼片段:insertAfter()------在已有元素的后面插入一個元素

AJAX

技術(shù)核心


看到此處,AJAX及XMLHttpReuqest對象仍然不是很明白,此時此刻我百度了下,所有BOM和DOM都是宿主對象,日后在說!
八.充實文檔的內(nèi)容


九.CSS—DOM





本章講的只要是用DOM方法去改變CSS樣式,重點是在這種方法中體會其中的編程思想。
十.用JS實現(xiàn)動畫效果


讀完本章,明白了實現(xiàn)動畫的基本思路,也知道了一點開發(fā)框架的思路。
十一.HTML5

文中提到在目前兼容還不是很好的情況下并不適合全部使用H5。
十二.綜合示例
把之前學(xué)習(xí)的所有的東西再綜合運用下




看完此書,更明白了一些庫在實現(xiàn)一些功能背后的原理,本書屬于基礎(chǔ)書,很好。