版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 JavaScript的DOM和事件,CQCST,內(nèi)容要點(diǎn),DOM:Document Object Model(文本對(duì)象模型) D:文檔 html 文檔 或 xml 文檔 O:對(duì)象 document 對(duì)象的屬性和方法 M:模型 DOM 是針對(duì)xml(html)的基于樹(shù)的API。 DOM樹(shù):節(jié)點(diǎn)(node)的層次。 DOM 把一個(gè)文檔表示為一棵家譜樹(shù)(父,子,兄弟) DOM定義了Node的接口以及許多種節(jié)點(diǎn)類型來(lái)表示XML節(jié)點(diǎn)的多個(gè)方面,DOM,DOM樹(shù),節(jié)點(diǎn)(node):來(lái)源于網(wǎng)絡(luò)理論,代表網(wǎng)絡(luò)中的一個(gè)連接點(diǎn)。網(wǎng)絡(luò)是由節(jié)點(diǎn)構(gòu)成的集合,節(jié)點(diǎn)及其類型,Node接口的特性和方法,getElem
2、entById() 尋找一個(gè)有著給定 id 屬性值的元素,返回值是一個(gè)有著給定 id 屬性值的元素節(jié)點(diǎn)。如果不存在這樣的元素,它返回 null。 var element = document.getElementById(ID); 該方法只能用于 document 對(duì)象,查找元素節(jié)點(diǎn),getElementsByTagName() 尋找有著給定標(biāo)簽名的所有元素,這個(gè)方法將返回一個(gè)節(jié)點(diǎn)集合,這個(gè)集合可以當(dāng)作一個(gè)數(shù)組來(lái)處理。這個(gè)集合的 length 屬性等于當(dāng)前文檔里有著給定標(biāo)簽名的所有元素的總個(gè)數(shù)。 var elements = element.getElementsByTagName(tagNa
3、me); 該方法不必非得用在整個(gè)文檔上。它也可以用來(lái)在某個(gè)特定元素的子節(jié)點(diǎn)當(dāng)中尋找有著給定標(biāo)簽名的元素。 var container = document.getElementById(“content”); var paras = container.getElementsByTagName(“p”); alert(paras.length);,查找元素節(jié)點(diǎn),hasChildNodes() 該方法用來(lái)檢查一個(gè)元素是否有子節(jié)點(diǎn),返回值是 true 或 false. var booleanValue = element.hasChildNodes(); 文本節(jié)點(diǎn)和屬性節(jié)點(diǎn)不可能再包含任何子節(jié)點(diǎn),
4、所以對(duì)這兩類節(jié)點(diǎn)使用 hasChildNodes 方法的返回值永遠(yuǎn)是 false. 如果 hasChildNodes 方法的返回值是 false,則 childNodes,firstChild,lastChild 將是空數(shù)組和空字符串。,查看是否存在子節(jié)點(diǎn),文檔里的每個(gè)節(jié)點(diǎn)都有以下屬性。 nodeName:一個(gè)字符串,其內(nèi)容是給定節(jié)點(diǎn)的名字。 var name = node.nodeName; 如果給定節(jié)點(diǎn)是一個(gè)元素節(jié)點(diǎn)或?qū)傩怨?jié)點(diǎn),nodeName 屬性將返回這個(gè)元素的名字。 如果給定節(jié)點(diǎn)是一個(gè)文本節(jié)點(diǎn),nodeName 屬性將返回內(nèi)容為 #text 的字符串。 nodeName 是一個(gè)只讀屬
5、性。,DOM 屬性 - nodeName,nodeType:返回一個(gè)整數(shù),這個(gè)數(shù)值代表著給定節(jié)點(diǎn)的類型。 nodeType 屬性返回的整數(shù)值對(duì)應(yīng)著 12 種節(jié)點(diǎn)類型: Node.ELEMENT_NODE (1) - 元素節(jié)點(diǎn) Node.ATTRIBUTE_NODE (2) - 屬性節(jié)點(diǎn) Node.TEXT_NODE (3) - 文本節(jié)點(diǎn) nodeType 是個(gè)只讀屬性,DOM 屬性 - nodeType,nodeValue:返回給定節(jié)點(diǎn)的當(dāng)前值(字符串) 如果給定節(jié)點(diǎn)是一個(gè)屬性節(jié)點(diǎn),返回值是這個(gè)屬性的值。 如果給定節(jié)點(diǎn)是一個(gè)文本節(jié)點(diǎn),返回值是這個(gè)文本節(jié)點(diǎn)的 內(nèi)容。 如果給定節(jié)點(diǎn)是一個(gè)元素節(jié)點(diǎn),
6、返回值是 null nodeValue 是一個(gè) 讀/寫(xiě) 屬性,但不能對(duì)元素節(jié)點(diǎn)的 nodeValue 屬性設(shè)置值,但可以為文本節(jié)點(diǎn)的 nodeValue 屬性設(shè)置一個(gè)值。 var message = document.getElementById(“fineprint”); if(message.firstChild.nodeType = 3) message.firstChild.nodeValue = “this might work”;,DOM 屬性 - nodeValue,replaceChild() 把一個(gè)給定父元素里的一個(gè)子節(jié)點(diǎn)替換為另外一個(gè)子節(jié)點(diǎn) var reference =
7、element.replaceChild(newChild,oldChild); 返回值是一個(gè)指向已被替換的那個(gè)子節(jié)點(diǎn)的引用指針。 如果被插入的子節(jié)點(diǎn)還有子節(jié)點(diǎn),則那些子節(jié)點(diǎn)也被插入到目標(biāo)節(jié)點(diǎn)中 var container = document.getElementById(“content”); var message = document.getElementById(“fineprint”); var announcement = document.getElementById(“headline”); var oldmessage = container.replaceChild(an
8、nouncement,message); container.appendChild(oldmessage);,替換節(jié)點(diǎn),getAttribute() 返回一個(gè)給定元素的一個(gè)給定屬性節(jié)點(diǎn)的值 var attributeValue = element.getAttribute(attributeName); 給定屬性的名字必須以字符串的形式傳遞給該方法。 給定屬性的值將以字符串的形式返回,如果給定屬性不存在,getAttribute() 將返回一個(gè)空字符串.,查找屬性節(jié)點(diǎn),setAttribute() 將給定元素節(jié)點(diǎn)添加一個(gè)新的屬性值或改變它的現(xiàn)有屬性的值。 element.setAttribu
9、te(attributeName,attributeValue); 屬性的名字和值必須以字符串的形式傳遞給此方法 如果這個(gè)屬性已經(jīng)存在,它的值將被刷新;如果不存在,setAttribute()方法將先創(chuàng)建它再為其賦值。 var para = document.createElement(“p”); para.setAttribute(“id”,”fineprint”); var container = document.getElementById(“content”); container.appendChild(para);,設(shè)置屬性節(jié)點(diǎn),createElement() 按照給定的標(biāo)簽名創(chuàng)
10、建一個(gè)新的元素節(jié)點(diǎn)。方法只有一個(gè)參數(shù):將被創(chuàng)建的元素的名字,是一個(gè)字符串. var reference = document.createElement(element); 方法的返回值:是一個(gè)指向新建節(jié)點(diǎn)的引用指針。返回值是一個(gè)元素節(jié)點(diǎn),所以它的 nodeType 屬性值等于 1。 新元素節(jié)點(diǎn)不會(huì)自動(dòng)添加到文檔里,新節(jié)點(diǎn)沒(méi)有 nodeParent 屬性,它只是一個(gè)存在于 JavaScript 上下文的對(duì)象. var oP = document.createElement(p);,創(chuàng)建新元素節(jié)點(diǎn),createTextNode() 創(chuàng)建一個(gè)包含著給定文本的新文本節(jié)點(diǎn)。這個(gè)方法的返回值是一個(gè)指向新
11、建文本節(jié)點(diǎn)引用指針。 var reference = document.createTextNode(text); 方法只有一個(gè)參數(shù):新建文本節(jié)點(diǎn)所包含的文本字符串 方法的返回值:是一個(gè)指向新建節(jié)點(diǎn)的引用指針。它是一個(gè)文本節(jié)點(diǎn),所以它的 nodeType 屬性等于 3. 新元素節(jié)點(diǎn)不會(huì)自動(dòng)添加到文檔里,新節(jié)點(diǎn)沒(méi)有 nodeParent 屬性 var oText = document.createTextNode(“Hello World”);,創(chuàng)建新文本節(jié)點(diǎn),appendChild() 為給定元素增加一個(gè)子節(jié)點(diǎn): var reference = element.appendChild(newC
12、hild). 給定子節(jié)點(diǎn) newChild 將成為給定元素節(jié)點(diǎn) element 的最后一個(gè)子節(jié)點(diǎn)。 方法的返回值是一個(gè)指向新增子節(jié)點(diǎn)的引用指針。 該方法通常與 createElement() createTextNode() 配合使用 var para = document.createElement(“p”); var message = document.createTextNode(“Hello World”); para.appendChild(message); document.body.appendChild(para); 新節(jié)點(diǎn)可以被追加給文檔中的任何一個(gè)元素,插入節(jié)點(diǎn)(1),
13、insertBefore() 把一個(gè)給定節(jié)點(diǎn)插入到一個(gè)給定元素節(jié)點(diǎn)的給定子節(jié)點(diǎn)的前面 var reference = element.insertBefore(newNode,targetNode); 節(jié)點(diǎn) newNode 將被插入到元素節(jié)點(diǎn) element 中并出現(xiàn)在節(jié)點(diǎn) targetNode 的前面. 節(jié)點(diǎn) targetNode 必須是 element 元素的一個(gè)子節(jié)點(diǎn)。 該方法通常與 createElement() 和 createTextNode() 配合使用 var container = document.getElementById(“content”); var message
14、 = document.getElementById(“fineprint”); var para = document.createElement(“p”); container.insertBefore(para,message);,插入節(jié)點(diǎn)(2),DOM 沒(méi)有提供 insertAfter() 方法,插入節(jié)點(diǎn)(3),removeChild() 從一個(gè)給定元素里刪除一個(gè)子節(jié)點(diǎn) var reference = element.removeChild(node); 返回值是一個(gè)指向已被刪除的子節(jié)點(diǎn)的引用指針。 某個(gè)節(jié)點(diǎn)被 removeChild() 方法刪除時(shí),這個(gè)節(jié)點(diǎn)所 包含的所有子節(jié)點(diǎn)將同時(shí)
15、被刪除。 var container = document.getElementById(“content”); var message = document.getElementById(“fineprint”); container.removeChild(message); 如果想刪除某個(gè)節(jié)點(diǎn),但不知道它的父節(jié)點(diǎn)是哪一個(gè),parentNode 屬性可以幫忙。 var message = document.getElementById(“fineprint”); var container = message.parentNode; container.removeChild(messag
16、e);,刪除節(jié)點(diǎn),ChildNodes:返回一個(gè)數(shù)組,這個(gè)數(shù)組由給定元素節(jié)點(diǎn)的子節(jié)點(diǎn)構(gòu)成: var nodeList = node.childNodes; 文本節(jié)點(diǎn)和屬性節(jié)點(diǎn)都不可能再包含任何子節(jié)點(diǎn),所以它們的 ChildNodes 屬性永遠(yuǎn)會(huì)返回一個(gè)空數(shù)組。 如果想知道某個(gè)元素有沒(méi)有子節(jié)點(diǎn),可以用 hasChildNodes 方法。 如果想知道某個(gè)元素有多少個(gè)子節(jié)點(diǎn),可以用 childNodes 數(shù)組的 length 屬性。 childNodes 屬性是一個(gè)只讀屬性。,遍歷節(jié)點(diǎn)樹(shù),firstChild:該屬性返回一個(gè)給定元素節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn),返回這個(gè)節(jié)點(diǎn)對(duì)象的指針。 var referen
17、ce = node.firstChild; 文本節(jié)點(diǎn)和屬性節(jié)點(diǎn)都不可能包含任何子節(jié)點(diǎn),所以它們的 firstChild 屬性永遠(yuǎn)會(huì)返回 null。 某個(gè)元素的 firstChild 屬性等價(jià)于這個(gè)元素的 childNodes 節(jié)點(diǎn)集合中的第一個(gè)節(jié)點(diǎn),即: var reference = node.ChildNodes0; firstChild 屬性是一個(gè)只讀屬性。,獲取第一個(gè)子節(jié)點(diǎn),lastChild:對(duì)應(yīng) firstChild 的一個(gè)屬性。 nextSibling: 返回一個(gè)給定節(jié)點(diǎn)的下一個(gè)子節(jié)點(diǎn)。 parentNode:返回一個(gè)給定節(jié)點(diǎn)的父節(jié)點(diǎn)。 parentNode 屬性返回的節(jié)點(diǎn)永遠(yuǎn)是
18、一個(gè)元素節(jié)點(diǎn),因?yàn)橹挥性毓?jié)點(diǎn)才有可能包含子節(jié)點(diǎn)。 document 節(jié)點(diǎn)的沒(méi)有父節(jié)點(diǎn)。 previousSibling:返回一個(gè)給定節(jié)點(diǎn)的上一個(gè)子節(jié)點(diǎn),獲取最后一個(gè)子節(jié)點(diǎn),瀏覽器幾乎都支持該屬性,但不是 DOM 標(biāo)準(zhǔn)的組成部分。 innerHTML 屬性可以用來(lái)讀,寫(xiě)某給定元素里的 HTML 內(nèi)容。 代碼1: 代碼2:,innerHTML屬性,下面我們來(lái)學(xué)習(xí)一下數(shù)組,數(shù)組,創(chuàng)建數(shù)組對(duì)象 初始化數(shù)組對(duì)象,var cnweek=new Array(7); var books=new Array();,創(chuàng)建數(shù)組時(shí)允許指定元素個(gè)數(shù)也可以不指定元素個(gè)數(shù)。,也可以直接在建立對(duì)象時(shí)初始化數(shù)組元素,元素類型
19、允許不同。,var cnweek=new Array(7); cnweek0=星期日; cnweek1=星期一; . cnweek6=星期六;,var test=new Array(100,a,true);,創(chuàng)建Array對(duì)象,創(chuàng)建二維數(shù)組,var cnweek=new Array(7); for (var i=0;i=6;i+) cnweeki=new Array(2); cnweek00=星期日; cnweek01=Sunday; cnweek10=星期一; cnweek11=Monday; . cnweek60=星期六; cnweek61=Saturday;,通過(guò)指定數(shù)組中的元素為數(shù)組的
20、方式可以創(chuàng)建二維甚至多維數(shù)組。,創(chuàng)建Array對(duì)象,獲取數(shù)組元素的個(gè)數(shù) length,書(shū)寫(xiě)格式 x.length 使用注解 x代表數(shù)組對(duì)象 length必須小寫(xiě) 中間用點(diǎn)操作符調(diào)用 返回大于或等于0整數(shù),var cnweek=new Array(7); cnweek0=星期日; cnweek1=星期一; cnweek2=星期二; cnweek3=星期三; cnweek4=星期四; cnweek5=星期五; cnweek6=星期六; for (var i=0;icnweek.length;i+) document.write(cnweeki+ | ); ,Array對(duì)象的屬性,Array對(duì)象的方
21、法,書(shū)寫(xiě)格式 x.join(bystr) x.toString() 使用注解 x代表數(shù)組對(duì)象 bystr作為連接數(shù)組中元素的字符串 返回連接后的字符串 與字符串的split功能剛好相反,var arr1=1, 2, 3, 4, 5, 6, 7; var str1=arr1.join(-); alert(str1); /結(jié)果為1-2-3-4-5-6-7,連接數(shù)組-join方法,用 join方法 連接數(shù)組程序圖解,var arr1=1, 2, 3, 4, 5, 6, 7;,var str1=arr1.join(-);,alert(str1); /結(jié)果為1-2-3-4-5-6-7,根據(jù)join方法傳
22、入?yún)?shù)-將元素連接成字符串,連接數(shù)組-join方法,書(shū)寫(xiě)格式 x.concat(value,.) 使用注解 x代表數(shù)組對(duì)象 value作為數(shù)組元素連接到數(shù)組的末尾 返回連接后的數(shù)組 concat方法并不改變x自身的值,var a = 1,2,3; Var a = new Array(1,2,3) var b=a.concat(4, 5) ; alert(a.toString(); /返回結(jié)果為1,2,3 alert(b.toString(); /返回結(jié)果為1,2,3,4,5,連接數(shù)組-concat方法,使用 concat方法 連接數(shù)組程序圖解,var a = 1,2,3;,var b=a.concat(4, 5) ;,alert(a.toString(); /返回結(jié)果為1,2,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45963.4-2025數(shù)字政府架構(gòu)框架第4部分:能力評(píng)估
- 工地現(xiàn)場(chǎng)管理考試題及答案
- 大專汽車(chē)營(yíng)銷題庫(kù)及答案
- 安全生產(chǎn)知識(shí)競(jìng)賽試題及答案第
- 一套Linux面試模擬題及答案
- 注會(huì)考試會(huì)計(jì)試題及答案
- 臨床病理科住院醫(yī)師規(guī)范化培訓(xùn)測(cè)試卷及答案
- 手術(shù)室考試試題簡(jiǎn)答題含答案(完整版)
- 山西省省直事業(yè)單位筆試真題附答案
- 輔警考試題庫(kù)附答案
- 江蘇省鹽城市大豐區(qū)四校聯(lián)考2025-2026學(xué)年七年級(jí)上學(xué)期12月月考?xì)v史試卷(含答案)
- 事業(yè)編退休報(bào)告申請(qǐng)書(shū)
- 原發(fā)性骨髓纖維化2026
- 半導(dǎo)體廠務(wù)項(xiàng)目工程管理 課件 項(xiàng)目6 凈化室系統(tǒng)的設(shè)計(jì)與維護(hù)
- 河南省洛陽(yáng)強(qiáng)基聯(lián)盟2025-2026學(xué)年高二上學(xué)期1月月考英語(yǔ)試題含答案
- 2026年中考數(shù)學(xué)模擬試卷試題匯編-尺規(guī)作圖
- 文化IP授權(quán)使用框架協(xié)議
- 玻璃鋼水箱安裝詳細(xì)技術(shù)方案
- 山東省煙臺(tái)市開(kāi)發(fā)區(qū)2024-2025學(xué)年上學(xué)期期末八年級(jí)數(shù)學(xué)檢測(cè)題(含答案)
- 桂花香包制作課件
- 社會(huì)工作本科畢業(yè)論文
評(píng)論
0/150
提交評(píng)論