淺析javascript中的DOM
什么是Dom?
1.簡(jiǎn)介
文檔對(duì)象模型(Document Object Model,簡(jiǎn)稱DOM),是W3C組織推薦的處理可擴(kuò)展標(biāo)志語言的標(biāo)準(zhǔn)編程接口。Document Object Model的歷史可以追溯至1990年代后期微軟與Netscape的“瀏覽器大戰(zhàn)”,雙方為了在JavaScript與JScript一決生死,于是大規(guī)模的賦予瀏覽器強(qiáng)大的功能。微軟在網(wǎng)頁技術(shù)上加入了不少專屬事物,計(jì)有VBScript、ActiveX、以及微軟自家的DHTML格式等,使不少網(wǎng)頁使用非微軟平臺(tái)及瀏覽器無法正常顯示。DOM即是當(dāng)時(shí)蘊(yùn)釀出來的杰作。
DOM(文檔對(duì)象模型)是HTML和XML的應(yīng)用程序接口(API)。DOM將把整個(gè)頁面規(guī)劃成由節(jié)點(diǎn)層級(jí)構(gòu)成的文檔。
所謂文檔對(duì)象模型,其實(shí)就是對(duì)網(wǎng)頁HTML中的各種元素的一種內(nèi)部的表示,例如HTML中的頭、段落、列表、風(fēng)格、ID等,所有的元素都能通過DOM來訪問 。
JavaScript最終是要操作Html頁面,讓Html變成DHtml,而操作Html頁面就要用到DOM。DOM就是把Html頁面模擬成一個(gè)對(duì)象,如果JavaScript只是執(zhí)行一些計(jì)算、循環(huán)等操作,而不能操作Html也就失去了它存在的意義。
DOM就是Html頁面的模型,將每個(gè)標(biāo)簽都做為一個(gè)對(duì)象,JavaScript通過調(diào)用DOM中的屬性、方法就可以對(duì)網(wǎng)頁中的文本框、層等元素進(jìn)行編程控制。比如通過操作文本框的DOM對(duì)象,就可以讀取文本框中的值、設(shè)置文本框中的值。
2.圖解

關(guān)于window整個(gè)頁面或者說窗口就是一個(gè)window對(duì)象---------------window是頂級(jí)對(duì)象
頁面中定義的變量和方法都是window的
window.id
document.getElementById()
使用window對(duì)象的屬性、方法的時(shí)候可以省略window。
比如:
window.alert(‘hello');
可以省略成alert(‘hello');
window.document可以直接寫document
能不寫window就不要寫,這樣可以減少js文件的字節(jié)數(shù)。
window.alert(‘大家好!');//彈出警告對(duì)話框
window.confirm(‘確定要?jiǎng)h除嗎?');//確定、取消對(duì)話框,返回true或false;
window.navigate(url);//將網(wǎng)頁重新導(dǎo)航到url,支持IE、Opera11.6。并不推薦,有些瀏覽器不行,
建議使用window.location.href=‘url';//支持大多數(shù)瀏覽器
動(dòng)態(tài)操作DOM元素
1.獲取DOM
getElementById(), (非常常用),根據(jù)元素的Id獲得對(duì)象,網(wǎng)頁中id不能重復(fù)。也可以直接通過元素的id來引用元素,但是有有效范圍、
getElementsByName(),根據(jù)元素的name獲得對(duì)象,由于頁面中元素的name可以重復(fù),比如多個(gè)RadioButton的name一樣,因此getElementsByName返回值是對(duì)象數(shù)組。
getElementsByTagName(),獲得指定標(biāo)簽名稱的元素?cái)?shù)組,比如getElementsByTagName(“input”)可以獲得所有的<input>標(biāo)簽。*表示所有標(biāo)簽
2.添加、移除、替換
document.write只能在頁面加載過程中才能動(dòng)態(tài)創(chuàng)建。
可以調(diào)用document的createElement方法來創(chuàng)建具有指定標(biāo)簽的DOM對(duì)象,然后通過調(diào)用某個(gè)元素的appendChild();方法將新創(chuàng)建元素添加到相應(yīng)的元素下。//父元素對(duì)象.removeChild(子元素對(duì)象);刪除元素。
createElement(‘element');創(chuàng)建一個(gè)節(jié)點(diǎn)
appendChild(node); 追加一個(gè)節(jié)點(diǎn)
removeChild(node);移除一個(gè)節(jié)點(diǎn)
replaceChild(new,old);替換一個(gè)節(jié)點(diǎn)
insertBefore(new,參照);把節(jié)點(diǎn)加到前面(插到某個(gè)節(jié)點(diǎn)前面)
方法:
屬性:
firstChild
lastChild
3.用innerHTML還是createElement()、appendChild()與removeChild()?
操作頁面的元素的時(shí)候是用innerHTML的方式還是createElement()、appendChild()與removeChild()的方式?
1.對(duì)于大量進(jìn)行節(jié)點(diǎn)操作時(shí),使用innerHTML的方式性能要好于頻繁的Dom操作(有專門用C或C++寫的html解析器。)。先將頁面的HTML代碼寫好,然后調(diào)用一次innerHTML,而不要反復(fù)調(diào)用innerHTML.
2.對(duì)于使用innerHTML=‘'的方式來刪除節(jié)點(diǎn),在某些情況下會(huì)存在內(nèi)存問題。比如:div下面有很多其他元素,每個(gè)元素都綁定有事件處理程序。此時(shí),innerHTML只是把當(dāng)前元素從節(jié)點(diǎn)樹上移除了,但是那些事件處理程序依然占用內(nèi)存。
js操作樣式
修改元素的樣式是className屬性。
(class是JavaScript的一個(gè)保留字,屬性不能用關(guān)鍵字、保留字所以就變成className了)網(wǎng)頁開關(guān)燈的效果。
修改元素的樣式不能this.style="background-color:Red"。
單獨(dú)修改樣式的屬性使用“style.屬性名”。注意在css中屬性名在JavaScript中操作的時(shí)候?qū)傩悦赡懿灰粯樱饕性谀切傩悦泻?的屬性,因?yàn)镴avaScript中-是不能做屬性、類名的。
操作float樣式的時(shí)候
IE:obj.style.styleFloat=‘right';
其他瀏覽器:obj.style.cssFloat=‘right';
Form對(duì)象
常用:click(),focus(),blur();//相當(dāng)于通過程序來觸發(fā)元素的單擊、獲得焦點(diǎn)以及失去焦點(diǎn)的事件。
form對(duì)象是表單的Dom對(duì)象。
方法:submit()提交表單,但是不會(huì)觸發(fā)onsubmit事件。
實(shí)現(xiàn)autopost,也就是焦點(diǎn)離開控件以后頁面立即提交,而不是只有提交submit按鈕以后才提交,當(dāng)光標(biāo)離開的時(shí)候觸發(fā)onblur事件,在onblur中調(diào)用form的submit方法。
在點(diǎn)擊submit后form的onsubmit事件被觸發(fā),在onsubmit中可以進(jìn)行數(shù)據(jù)校驗(yàn),如果數(shù)據(jù)有問題,返回false即可取消提交
以上所述就是個(gè)人對(duì)于javascript的DOM的理解了,希望大家能夠喜歡。
- 詳談javascript中DOM的基本屬性
- javascript學(xué)習(xí)筆記(三)BOM和DOM詳解
- javascript獲取dom的下一個(gè)節(jié)點(diǎn)方法
- javascript 獲取HTML DOM父、子、臨近節(jié)點(diǎn)
- JavaScript與DOM組合動(dòng)態(tài)創(chuàng)建表格實(shí)例
- javascript轉(zhuǎn)換字符串為dom對(duì)象(字符串動(dòng)態(tài)創(chuàng)建dom)
- Javascript入門學(xué)習(xí)第八篇 js dom節(jié)點(diǎn)屬性說明
- javascript firefox兼容ie的dom方法腳本
- JavaScript 節(jié)點(diǎn)操作 以及DOMDocument屬性和方法
相關(guān)文章
小程序?qū)崿F(xiàn)新用戶判斷并跳轉(zhuǎn)激活的方法
這篇文章主要介紹了小程序?qū)崿F(xiàn)新用戶判斷并跳轉(zhuǎn)激活的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
uniapp開發(fā)App出現(xiàn)網(wǎng)絡(luò)異常的解決方法
這篇文章主要給大家介紹了uniapp開發(fā)App出現(xiàn)網(wǎng)絡(luò)異常的解決方案,文中有相關(guān)的解決方法和步驟,具有一定的參考價(jià)值,需要的朋友可以參考下2023-09-09
詳解JavaScript如何利用異步解密回調(diào)地獄
為了更好地處理這些異步操作,JavaScript?引入了異步編程的概念,這篇文章主要來和大家詳細(xì)聊聊JavaScript中異步的相關(guān)應(yīng)用,希望對(duì)大家有所幫助2024-02-02
在IE6下發(fā)生Internet Explorer cannot open the Internet site錯(cuò)誤
最近在IE6下面時(shí)常會(huì)發(fā)生“Internet Explorer cannot open the Internet site ”錯(cuò)誤。2010-06-06
一個(gè)JS小玩意 幾個(gè)屬性相加不能超過一個(gè)特定值.
以前玩游戲,有給玩家角色分配什么魔法點(diǎn)數(shù),體力點(diǎn)數(shù)的功能,而且?guī)讉€(gè)屬性相加不能超過一個(gè)特定值.2009-09-09
javascript 實(shí)現(xiàn)滾動(dòng)效果代碼整理
javascript 實(shí)現(xiàn)滾動(dòng)效果代碼整理,需要的朋友可以參考下。2010-03-03
javascript支持firefox,ie7頁面布局拖拽效果代碼
javascript 拖拽 頁面拖拽 拖拽效果的頁面 超級(jí)拖拽 javascript支持firefox,ie7頁面布局拖拽效果代碼 鼠標(biāo)拖拽2007-12-12
JS實(shí)現(xiàn)顏色的10進(jìn)制轉(zhuǎn)化成rgba格式的方法
這篇文章主要介紹了JS實(shí)現(xiàn)顏色的10進(jìn)制轉(zhuǎn)化成rgba格式的方法,涉及javascript針對(duì)顏色數(shù)值轉(zhuǎn)換的相關(guān)運(yùn)算操作技巧,需要的朋友可以參考下2017-09-09
Javascript中call和apply函數(shù)的比較和使用實(shí)例
這篇文章主要介紹了Javascript中call和apply函數(shù)的比較和使用實(shí)例,本文試圖用更加清晰簡(jiǎn)單的思路來分析解釋這兩個(gè)函數(shù),需要的朋友可以參考下2015-02-02

