Document Object Model 文檔對象模型:是一套對文檔的內(nèi)容進行抽象和概念化的方法喉恋。、
W3C對DOM的定義是:一個與系統(tǒng)平臺和編程語言無關(guān)的接口抑进,程序和腳本可以通過這個接口動態(tài)地訪問和修改文檔的內(nèi)容秃症、結(jié)構(gòu)和樣式厂榛。
建議在每條語句的末尾都加上一個分號
單行注釋用//
多行注釋用/*
允許直接對變量賦值而無需事先聲明,但是提前聲明變量是一種良好的編程習慣
變量和其他語法元素都是區(qū)分大小寫的
不允許變量名中包含空格或標點符號($除外)
駝峰格式
javascript不需要進行類型聲明纽匙,屬于弱類型語言
在同一個腳本中字符串的引號保持一致(單引號务蝠,雙引號)
布爾值不是字符串,千萬不要把布爾值用引號括起來
如果在某個函數(shù)中使用了var烛缔,那個變量將被視為一個局部變量
反之馏段,如果沒有使用var,那個變量就將被視為一個全局變量
所以在定義一個函數(shù)時践瓷,一定要把它內(nèi)部的變量全都明確地聲明為局部變量院喜,如果你總是在函數(shù)里使用var關(guān)鍵字來定義變量,就能避免任何形式的二義性隱患
三種對象類型
用戶自定義對象
內(nèi)建對象
宿主對象:由瀏覽器提供的對象
三種節(jié)點:元素節(jié)點晕翠、文本節(jié)點喷舀、屬性節(jié)點
getElementById將返回一個對象,該對象對應(yīng)著文檔里的一個特定的元素節(jié)點
getElementByTagName和getElementsByclassName將返回一個對象數(shù)組淋肾,它們分別對應(yīng)著文檔里的一組特定的元素節(jié)點硫麻。
setAttribute做出的修改不會反映在文檔本身的源代碼里
DOM對頁面內(nèi)容進行刷新卻不需要在瀏覽器里刷新頁面
嚴格遵守“第1級DOM”能夠讓你避免與兼容性有關(guān)的任何問題
onclick="showPic(this); return false;"
nodeNodes 屬性返回的數(shù)組包含所有類型的節(jié)點,而不僅僅是元素節(jié)點
連空格和換行符都會被解釋為節(jié)點
元素節(jié)點的nodeType屬性值是1
屬性節(jié)點的nodeType屬性值是2
文本節(jié)點的nodeType屬性值是3
使用nodeValue屬性來改變一個文本節(jié)點的值
node.childNodes[0] = node.firstChild
node.lastChild = node.childNodes.length-1
平穩(wěn)退化:讓訪問者在他們?yōu)g覽器不支持javascript的情況下仍能順利地瀏覽你的網(wǎng)站樊卓,搜索引擎友好
從性能考慮拿愧,盡量少訪問DOM和盡量減少標記
根據(jù)HTTP規(guī)范,瀏覽器每次從同一個域名中最多只能同時下載兩個文件碌尔〗焦迹考慮合并腳本,減少加載頁面時發(fā)送
如果想用javascript給某個網(wǎng)頁添加一些行為七扰,就不該讓javascript代碼對這個網(wǎng)頁的結(jié)構(gòu)有任何依賴
nodeName屬性總是返回一個大寫字母的值
onclick鼠標點擊事件奢赂,用Tab鍵移動到某個鏈接然后按下回車鍵也會觸發(fā)
onkeypress按下鍵盤上任何一個鍵都會觸發(fā)onkeypress事件,包括Tap鍵颈走,會導致只使用鍵盤訪問的用戶永遠無法離開當前鏈接
HTML-DOM只能用來處理Web文檔
結(jié)構(gòu)與行為的分離程度越大越好
如果把position屬性值是absolute的元素A放入一個position屬性值是relative的元素B膳灶,B就成為A的容器元素,而A在B的顯示區(qū)域里按absolute方式進行擺放