版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
十四、DOM模型<html><head><metahttp_equiv="conten_type"content="text/html;charset=gb2312"/></head><body><h2><ahref="#isaac">標(biāo)題1</a></h2><p>段落1</p><ulid="myUI"><li>JavaScript</li><li>DOM</li><li>CSS</li></ul></body></html>2288一個網(wǎng)頁的基本結(jié)構(gòu)為樹形結(jié)構(gòu),<html>標(biāo)記位于頂端,稱為DOM的根節(jié)點(diǎn),而在根節(jié)點(diǎn)下面有兩個分支,分別為<head>和<body>分支。它們處于同級的兄弟關(guān)系,相當(dāng)于“同級目錄”,稱為同級節(jié)點(diǎn)。其它標(biāo)記也可以按這種方式分析。htmlheadbodymetaptitleulh2alilili2289html文件是節(jié)點(diǎn)構(gòu)成的集合。在DOM中有3種節(jié)點(diǎn),分別為元素節(jié)點(diǎn)、文本節(jié)點(diǎn)和屬性節(jié)點(diǎn)。1、元素節(jié)點(diǎn)可以說整個DOM模型都是由元素節(jié)點(diǎn)(elementnode)構(gòu)成的。從上圖中可以看出,<html>、<body>、<meta>、<h2>、<p>、<li>等都是元素節(jié)點(diǎn),各種標(biāo)記便是這些元素節(jié)點(diǎn)的名稱。在元素節(jié)點(diǎn)中還可以包含其它元素,即在標(biāo)記中可以套其它標(biāo)記,例如,在上例中<ul>標(biāo)記里套了<li>標(biāo)記。2、文本節(jié)點(diǎn)在HTML文檔中只用標(biāo)記搭建框架是不夠的,還2290要向用戶顯示頁面內(nèi)容,例如在<h2>標(biāo)記中要顯示文本“標(biāo)題1”,項(xiàng)目列表<li>標(biāo)記中還要顯示Javascript、DOM、CSS等。這些具體的文本在DOM模型中稱之為文本節(jié)點(diǎn)(textnode).在XHTML文檔里,文本節(jié)點(diǎn)總是包含在元素節(jié)點(diǎn)里,但是并不是所有元素節(jié)點(diǎn)都包含文件內(nèi)容,例如<ul>元素里并沒有直接顯示任何文本內(nèi)容,只包含了一些元素節(jié)點(diǎn),例如<li>,并在<li>元素中顯示文本內(nèi)容。2、屬性節(jié)點(diǎn)(attributenode)在標(biāo)記元素中,或多或少地使用了一些標(biāo)記屬性,例如:<atitle="CSS"href="">網(wǎng)易主頁</a>2291在以上代碼中,title="CSS"和href="分別是兩個屬性節(jié)點(diǎn)。由于標(biāo)記屬性總是放在標(biāo)記中,因此屬性節(jié)點(diǎn)總是包含在元素節(jié)點(diǎn)之中。2292a元素節(jié)點(diǎn)title="CSS"href="網(wǎng)易主頁屬性節(jié)點(diǎn)屬性節(jié)點(diǎn)文本節(jié)點(diǎn)各節(jié)點(diǎn)之間的關(guān)系圖十五、DOM應(yīng)用DOM模型中的節(jié)點(diǎn)主要用于處理HTML網(wǎng)頁,即用DOM來操作頁面文檔。對于每一個DOM節(jié)點(diǎn)node來講,有一系列的屬性和方法函數(shù)可以使用,在應(yīng)用節(jié)點(diǎn)以前要了解節(jié)點(diǎn)的常用屬性和方法函數(shù):屬性/方法名
類型/返回類型
說明nodeNameString
節(jié)點(diǎn)名稱,根據(jù)節(jié)
點(diǎn)的類型而定義2293nodeValueString
節(jié)點(diǎn)的值,同樣根據(jù)節(jié)點(diǎn)的類型而定義nodeTypeNumber
節(jié)點(diǎn)類型,常量值之一firstChildNode
指向childNodes列表中
的第一個節(jié)點(diǎn)lastChildNode
指向childNodes列表中
的最后一個節(jié)點(diǎn)childNotesNodeList
所有子節(jié)點(diǎn)的列表,方法item(i)可以訪問第i+1個節(jié)點(diǎn)parentNodeNode
指向節(jié)點(diǎn)的父節(jié)點(diǎn),如果
已經(jīng)是根節(jié)點(diǎn),則返回null2294previousSiblingNode
指向前一個兄弟節(jié)點(diǎn),如果該節(jié)點(diǎn)已經(jīng)是第一個節(jié)點(diǎn),則返回nullnextSiblingNode
指向后一個兄弟節(jié)點(diǎn),如果該節(jié)點(diǎn)已經(jīng)是最后一個節(jié)點(diǎn),則返回nullhaschildNodes()Boolean
當(dāng)childNodes包含一個或者多個節(jié)點(diǎn)時,返回true.attributesNameNodeMap包含一個元素特性的Attr對象,僅用于元素節(jié)點(diǎn)。appendChild(node)node
將node節(jié)點(diǎn)添加到childNodes的末尾removeChild(node)node
從childNodes節(jié)點(diǎn)中刪除node節(jié)點(diǎn)。2295replaceChild(newnode)node
將childNodes節(jié)點(diǎn)中l(wèi)odnode節(jié)點(diǎn)替換成newnode節(jié)點(diǎn)。insertBefore(newnode,refnode)node
在childNodes節(jié)點(diǎn)中的refnode節(jié)點(diǎn)之前插入newnode節(jié)點(diǎn)。1、訪問節(jié)點(diǎn)DOM提供了兩個訪問節(jié)點(diǎn)的常用方法函數(shù):getElementsByTagName()getElementsById()getElementsByTagName()函數(shù)用來返回某個相同標(biāo)記元素的NodeList,例如用此函數(shù)返回某個HTML文檔中的<li>標(biāo)記元素的列表:2296varoLi=document.getElementsByTagName("li");特別指出,只有當(dāng)文檔加載完畢以后才能正確分析DOM結(jié)構(gòu),那么以下兩個取元素的方法函數(shù)才會有效:getElementsByTagName()getElementsById()h249.html文件內(nèi)容2297<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>getElementsByTagName()</title><scriptlanguage="javascript">2298functionsearchDOM(){ //放在函數(shù)內(nèi),頁面加載完成后才用<body>的onload加載
varoLi=document.getElementsByTagName("li"); //輸出長度、標(biāo)簽名稱以及某項(xiàng)的文本節(jié)點(diǎn)值
alert(oLi.length+""+oLi[0].tagName+""+oLi[3].childNodes[0].nodeValue); varoUl=document.getElementsByTagName("ul"); varoLi2=oUl[1].getElementsByTagName("li"); alert(oLi2.length+""+oLi2[0].tagName+""+oLi2[1].childNodes[0].nodeValue);}</script></head>2299<bodyonload="searchDOM()"> <ul>客戶端語言 <li>HTML</li> <li>JavaScript</li> <li>CSS</li> </ul><ul>服務(wù)器端語言 <li></li> <li>JSP</li> <li>PHP</li></ul></body></html>2300在上例中,
有2個ul標(biāo)記。而每個ul標(biāo)記中分別有3個li標(biāo)記,總共有6個li標(biāo)記。提示:varoLi=document.getElementsByTagName("li");此句代碼的意思,把文檔中所有的li標(biāo)記提取出來形成一個節(jié)點(diǎn)數(shù)組,放在oLi變量中。所以oLi變量是個數(shù)組變量,在后面的代碼中用數(shù)組的方法來寫代碼就行了。在文檔中一共有6個li標(biāo)記,那么這個數(shù)組長度為6,元素編號從0~5.varoUl=document.getElementsByTagName("ul");由于ul在文檔中只有二個,所以oUl變量只有兩個元素,元素編號為0~1.2301id號或者id名在HTML文檔中是惟一的。id可以在CSS進(jìn)行定義或者添加其屬性,也可以不在CSS中定義或者添加屬性,可以直接在標(biāo)記中指定id名稱,例如:<liid="cssLi">CSS</li>這個"cssLi"名稱就是<li>標(biāo)記的id名稱,可能id號并沒有在CSS中定義它的屬性,但一樣可以在<li>標(biāo)記里使用,指定此<li>標(biāo)記的名稱為cssLi。h250.html文件內(nèi)容2302<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>getElementById()</title><scriptlanguage="javascript">functionsearchDOM(){ varoLi=document.getElementById("cssLi"); //輸出標(biāo)簽名稱以及文本節(jié)點(diǎn)值 alert(oLi.tagName+""+oLi.childNodes[0].nodeValue);}</script></head>2303<bodyonload="searchDOM()"> <ul>客戶端語言 <li>HTML</li> <li>JavaScript</li> <liid="cssLi">CSS</li> </ul><ul>服務(wù)器端語言 <li></li> <li>JSP</li> <li>PHP</li></ul></body></html>2304提示:varoLi=document.getElementById("cssLi");由于oLi變量不是數(shù)組,所以不能使用數(shù)組長度屬性length或者數(shù)組下標(biāo),例如以下使用方式是錯誤的:oLi.lengthoLi[0].childNodes[0].nodeValue注意:在IE瀏覽器中,如果id名與某個標(biāo)記同名時,那個標(biāo)記元素的值會被返回。這是非常嚴(yán)重的bug,也是開發(fā)網(wǎng)頁者要注意的地方。因此,在開發(fā)網(wǎng)頁時要避免id名與其它元素同名。23052、檢查節(jié)點(diǎn)類型通過節(jié)點(diǎn)的nodeType屬性可以檢測出節(jié)點(diǎn)的類型。
該屬性返回一個整數(shù)值,一共有12個值,其中1、2、3分別代表元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)和文本節(jié)點(diǎn),其它值基本上用不上。例如:alert(document.nodeType);3、利用父、子、兄關(guān)系查找節(jié)點(diǎn)父、子、兄關(guān)系是DOM模型中節(jié)點(diǎn)之間的最重要的三種關(guān)系。2306在獲取某個節(jié)點(diǎn)之后,可通過父子關(guān)系,并利用haChildNodes()方法函數(shù)和childNodes屬性獲取該節(jié)點(diǎn)所包含的所有子節(jié)點(diǎn)。復(fù)習(xí):haschildNodes()Boolean
當(dāng)childNodes包含一個或者多個節(jié)點(diǎn)時,返回true.childNotesNodeList
所有子節(jié)點(diǎn)的列表,是數(shù)組,方法item(i)可以訪問第i+1個節(jié)點(diǎn)h251.html文件內(nèi)容2307<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>childNodes</title><scriptlanguage="javascript">functionmyDOMInspector(){varoUl=document.getElementById("myList"); //獲取<ul>標(biāo)記varDOMString="";2308if(oUl.hasChildNodes()){ //判斷是否有子節(jié)點(diǎn)
varoCh=oUl.childNodes; for(vari=0;i<oCh.length;i++) //逐一查找
DOMString+=oCh[i].nodeName+"\n"; } alert(DOMString);}</script></head>2309<bodyonload="myDOMInspector()"> <ulid="myList"> <li>糖醋排骨</li> <li>圓籠粉蒸肉</li> <li>泡菜魚</li><li>板栗燒雞</li><li>麻婆豆腐</li> </ul></body></html>23102311解釋:在上例中,提醒框里顯示的內(nèi)容有#text。這是由于在ul無序列表中有空格存在直接導(dǎo)致了顯示#text??梢宰鰝€實(shí)驗(yàn),可以把ul無序列表的代碼修改如下:<ulid="myList"><li>糖醋排骨</li><li>圓籠粉蒸肉</li><li>泡菜魚</li><li>板栗燒雞</li><li>麻婆豆腐</li></ul>顯示結(jié)果如下:2312通過父節(jié)點(diǎn)可以輕松地尋找到子節(jié)點(diǎn),同樣利用parentNode屬性可以獲取一個節(jié)點(diǎn)的父節(jié)點(diǎn)。復(fù)習(xí):parentNodeNode指向節(jié)點(diǎn)的父節(jié)點(diǎn),如果已經(jīng)是根節(jié)點(diǎn),則返回nullh252.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html>2313<head><title>parentNode</title><scriptlanguage="javascript">functionmyDOMInspector(){varmyItem=document.getElementById("myDearFood"); alert(myItem.parentNode.tagName);}</script></head>2314<bodyonload="myDOMInspector()"> <ul> <li>糖醋排骨</li> <li>圓籠粉蒸肉</li> <li>泡菜魚</li> <liid="myDearFood">板栗燒雞</li> <li>麻婆豆腐</li> </ul></body></html>2315通過parentNode屬性可以成功取得父節(jié)點(diǎn),同時任何節(jié)點(diǎn)都有此屬性,這樣可以由子節(jié)點(diǎn)一直往上搜索,直到body節(jié)點(diǎn)為止。h253.html文件內(nèi)容2316<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>parentNode</title><scriptlanguage="javascript">2317functionmyDOMInspector(){ varmyItem=document.getElementById("myDearFood"); varparentElm=myItem.parentNode; while(parentElm.className!="colorful"&&parentElm!=document.body) parentElm=parentElm.parentNode; //一路往上找
alert(parentElm.tagName);}</script></head>2318<bodyonload="myDOMInspector()"><divclass="colorful"><ul> <li>糖醋排骨</li> <li>圓籠粉蒸肉</li> <li>泡菜魚</li> <liid="myDearFood">板栗燒雞</li> <li>麻婆豆腐</li> </ul></div></body></html>2319提示:從while循環(huán)語句可以看出,節(jié)點(diǎn)最多尋找到<divclass="colorful">位置,然后不滿足while循環(huán)條件跳出循環(huán)。所以最后的父節(jié)點(diǎn)的位置應(yīng)該是<div>標(biāo)記。2320父子關(guān)系是上層與下層之間的關(guān)系,而兄弟之間的關(guān)系是平級關(guān)系,可以用以下方法或者屬性決定:previousSiblingNode指向前一個兄弟節(jié)點(diǎn),如果該節(jié)點(diǎn)已經(jīng)是第一個節(jié)點(diǎn),則返回nullnextSiblingNode指向后一個兄弟節(jié)點(diǎn),如果該節(jié)點(diǎn)已經(jīng)是最后一個節(jié)點(diǎn),則返回nullh254.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""">2321<html><head><title>Siblings</title><scriptlanguage="javascript">functionmyDOMInspector(){varmyItem=document.getElementById("myDearFood"); //訪問兄弟節(jié)點(diǎn)
varnextListItem=myItem.nextSibling; varpreListItem=myItem.previousSibling;alert(nextListItem.tagName+""+preListItem.tagName);}2322</script></head><bodyonload="myDOMInspector()"><ul> <li>糖醋排骨</li> <li>圓籠粉蒸肉</li> <li>泡菜魚</li> <liid="myDearFood">板栗燒雞</li> <li>麻婆豆腐</li> </ul></body></html>2323在IE6.0瀏覽器上,此例結(jié)果正常,如下圖所示:但在Chrome瀏覽器上顯示不正常,如下圖所示:2324這是怎么回事呢?看起來代碼無懈可擊,可是就是出現(xiàn)了問題。這是由于在IE9.0瀏覽器和Chrome瀏覽器把代碼中眾多的空格當(dāng)成了文本節(jié)點(diǎn),結(jié)果導(dǎo)致了錯誤。所以,以上代碼只適合于低版本的IE瀏覽器。為了上例中代碼的兼容性,可用nodeType屬性對節(jié)點(diǎn)類型進(jìn)行判斷,這樣訪問相鄰的兄弟節(jié)點(diǎn)就沒有問題了。2325h255.html文件內(nèi)容說明:節(jié)點(diǎn)對象.nodeType=1,表示此節(jié)點(diǎn)對象為元素節(jié)點(diǎn)<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>Siblings</title>2326<scriptlanguage="javascript">functionnextSib(node){ vartempLast=node.parentNode.lastChild;//判斷是否是最后一個節(jié)點(diǎn),如果是則返回null if(node==tempLast) returnnull; vartempObj=node.nextSibling;//逐一搜索后面的兄弟節(jié)點(diǎn),直到發(fā)現(xiàn)元素節(jié)點(diǎn)為止
while(tempObj.nodeType!=1&&tempObj.nextSibling!=null) tempObj=tempObj.nextSibling;2327//三目運(yùn)算符,如果是元素節(jié)點(diǎn)則返回節(jié)點(diǎn)本身,否則返回null。元素節(jié)點(diǎn)時tempObj.nodeType==1return(tempObj.nodeType==1)?tempObj:null;}2328functionprevSib(node){ vartempFirst=node.parentNode.firstChild;//判斷是否是第一個節(jié)點(diǎn),如果是則返回null if(node==tempFirst) returnnull; vartempObj=node.previousSibling;//逐一搜索前面的兄弟節(jié)點(diǎn),直到發(fā)現(xiàn)元素節(jié)點(diǎn)為止
while(tempObj.nodeType!=1&&tempObj.previousSibling!=null) tempObj=tempObj.previousSibling;return(tempObj.nodeType==1)?tempObj:null;}2329functionmyDOMInspector(){varmyItem=document.getElementById("myDearFood"); //獲取后一個元素兄弟節(jié)點(diǎn)
varnextListItem=nextSib(myItem); //獲取前一個元素兄弟節(jié)點(diǎn)
varpreListItem=prevSib(myItem); alert("后一項(xiàng):"+((nextListItem!=null)?nextListItem.firstChild.nodeValue:null)+"前一項(xiàng):"+((preListItem!=null)?preListItem.firstChild.nodeValue:null));}</script>2330</head><bodyonload="myDOMInspector()"><ul> <li>糖醋排骨</li> <li>圓籠粉蒸肉</li> <li>泡菜魚</li> <liid="myDearFood">板栗燒雞</li> <li>麻婆豆腐</li> </ul></body></html>2331在上例中,使用以下循環(huán)語句判斷當(dāng)前節(jié)點(diǎn)不是元素節(jié)點(diǎn)并且不是第一個節(jié)點(diǎn),則繼續(xù)尋找前一個節(jié)點(diǎn)。如果當(dāng)前節(jié)點(diǎn)是元素節(jié)點(diǎn)和第一個節(jié)點(diǎn),則循環(huán)條件不成立退出循環(huán):while(tempObj.nodeType!=1&&tempObj.previousSibling!=null) tempObj=tempObj.previousSibling;2332尋找下一個節(jié)點(diǎn)的循環(huán)語句原理一樣:while(tempObj.nodeType!=1&&tempObj.nextSibling!=null) tempObj=tempObj.nextSibling;4、設(shè)置節(jié)點(diǎn)屬性尋找到節(jié)點(diǎn)以后可以查詢節(jié)點(diǎn)屬性,也可以設(shè)置節(jié)點(diǎn)屬性,主要用以下兩個方法函數(shù)來完成:getAttribute(屬性)獲得節(jié)點(diǎn)屬性setAttribute(屬性,參數(shù))設(shè)置節(jié)點(diǎn)屬性此兩個方法函數(shù)只能被節(jié)點(diǎn)調(diào)用,不能被document對象調(diào)用。2333h255.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>getAttribute()和setAttribute()</title><scriptlanguage="javascript">2334functionmyDOMInspector(){ //獲取圖片,取第一個img標(biāo)記的內(nèi)容varmyImg=document.getElementsByTagName("img")[0]; //獲取圖片title屬性
alert(myImg.getAttribute("title"));}functionchangePic(){ //獲取圖片varmyImg=document.getElementsByTagName("img")[0]; //設(shè)置圖片src和title屬性
myImg.setAttribute("src","02.jpg"); myImg.setAttribute("title","紫荊公寓");2335}</script></head><bodyonload="myDOMInspector()"><imgsrc="01.jpg"title="情人坡"onclick="changePic()"/></body></html>233601.jpg02.jpg2337單擊5、創(chuàng)建和添加節(jié)點(diǎn)在DOM中創(chuàng)建節(jié)點(diǎn)比較規(guī)范。createElement()創(chuàng)建一個元素節(jié)點(diǎn)createTextNode()創(chuàng)建一個文本節(jié)點(diǎn)createDocumentFragment()創(chuàng)建一個文檔碎片節(jié)點(diǎn)父節(jié)點(diǎn).appendchild(子節(jié)點(diǎn)),把子節(jié)點(diǎn)添加到父節(jié)點(diǎn)中子節(jié)點(diǎn)列表的最后面。h256.html文件內(nèi)容2338<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>創(chuàng)建新節(jié)點(diǎn)</title><scriptlanguage="javascript">2339functioncreateP(){ varoP=document.createElement("p");//創(chuàng)建一個P節(jié)點(diǎn)放在oP變量中 varoText=document.createTextNode("這是一段感人的故事");//用字符串"這是一段感人的故事"創(chuàng)建一個文件節(jié)點(diǎn),并把此文本節(jié)點(diǎn)放在oText變量中 oP.appendChild(oText);//在P標(biāo)記的元素節(jié)點(diǎn)oP中添加文件節(jié)點(diǎn)oText document.body.appendChild(oP);//有文檔的body標(biāo)記中添加P標(biāo)記的oP節(jié)點(diǎn)}2340</script></head><bodyonload="createP()"><p>事先寫一行文字在這里,測試appendChild()方法的添加位置</p></body></html>23416、刪除節(jié)點(diǎn)刪除節(jié)點(diǎn)是通過父節(jié)點(diǎn)的removeChild()方法函數(shù)來完成的。通常的方法是先尋找到欲刪除的節(jié)點(diǎn),然后再利用parentNode屬性尋找到其父節(jié)點(diǎn),再用此removeChild()方法函數(shù)把此子節(jié)點(diǎn)刪除。h257.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""">2342<html><head><title>刪除節(jié)點(diǎn)</title><scriptlanguage="javascript">functiondeleteP(){ varoP=document.getElementsByTagName("p")[0]; varfarNane=oP.parentNode; farName.removeChild(oP); //oP.parentNode.removeChild(oP); //刪除節(jié)點(diǎn)}2343</script></head><bodyonload="deleteP()"><p>這行文字你看不到</p></body></html>23447、替換節(jié)點(diǎn)用replaceChild()的方法函數(shù)來替換節(jié)點(diǎn)。此函數(shù)同樣是用父節(jié)點(diǎn)來操作子節(jié)點(diǎn)的,即:父節(jié)點(diǎn).replaceChild(新子節(jié)點(diǎn),舊子節(jié)點(diǎn))功能:用新子節(jié)點(diǎn)來替換舊子節(jié)點(diǎn)。h258.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head>2345<title>替換節(jié)點(diǎn)</title><scriptlanguage="javascript">functionreplaceP(){ varoOldP=document.getElementsByTagName("p")[0]; varoNewP=document.createElement("p"); //新建節(jié)點(diǎn)
varoText=document.createTextNode("這是一個感人肺腑的故事"); oNewP.appendChild(oText);
oOldP.parentNode.replaceChild(oNewP,oOldP);//替換節(jié)點(diǎn)}2346</script></head><bodyonload="replaceP()"><p>這行文字被替換了</p></body></html>23478、在特定節(jié)點(diǎn)前插入節(jié)點(diǎn)appendchild()方法函數(shù)只能把節(jié)點(diǎn)添加到父節(jié)點(diǎn)中子節(jié)點(diǎn)列表(childNodes)的最后面。然而有時需要把某節(jié)點(diǎn)插入到某個子節(jié)點(diǎn)的前面,這時要使用以下方法函數(shù):父節(jié)點(diǎn).insertBefore(新節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn));功能:把新節(jié)點(diǎn)插入到目標(biāo)節(jié)點(diǎn)以前。h259.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""">2348<html><head><title>插入節(jié)點(diǎn)</title><scriptlanguage="javascript">functioninsertP(){
varoOldP=document.getElementsByTagName("p")[0]; varoNewP=document.createElement("p"); //新建節(jié)點(diǎn)
varoText=document.createTextNode("這是一個感人肺腑的故事"); oNewP.appendChild(oText);//此時的 oNewP節(jié)點(diǎn)還沒有上屏幕2349oOldP.parentNode.insertBefore(oNewP,oOldP);//插入節(jié)點(diǎn),在原來的P節(jié)點(diǎn)前插入新的P節(jié)點(diǎn)}</script></head><bodyonload="insertP()"><p>插入到這行文字之前</p></body></html>2350當(dāng)節(jié)點(diǎn)添加到頁面中時通常頁面會更新,馬上顯示出頁面的變化。當(dāng)添加的節(jié)點(diǎn)數(shù)目多時頁面執(zhí)行的效率就會降低。解決的辦法就是創(chuàng)建一個文檔碎片,先把新節(jié)點(diǎn)添加到文檔碎片里,然后再一次性地添加到實(shí)際的網(wǎng)頁中。建立文檔碎片對象:varoFragment=document.createDocumentFragment();h260.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html>2351<head><title>文檔碎片</title><styletype="text/css"><!--p{ padding:2px; margin:0px;}--></style><scriptlanguage="javascript">2352functioninsertPs(){ varaColors=["red","green","blue","magenta","yellow","chocolate","black","aquamarine","lime","fuchsia","brass","azure","brown","bronze","deeppink","aliceblue","gray","copper","coral","feldspar","orange","orchid","pink","plum","quartz","purple"];varoFragment=document.createDocumentFragment(); //創(chuàng)建文檔碎片
for(vari=0;i<aColors.length;i++){ varoP=document.createElement("p");varoText=document.createTextNode(aColors[i]); 2353oP.appendChild(oText); oFragment.appendChild(oP); //將節(jié)點(diǎn)先添加到碎片中
} document.body.appendChild(oFragment); //最后一次性添加到頁面}</script></head><bodyonload="insertPs()"></body></html>2354分析:1)變量aColors是個數(shù)組,把要顯示的內(nèi)容用數(shù)組的方式存儲在此變量中。2)建立文檔碎片對象oFragment。3)用數(shù)組aColors的循環(huán)語句,先創(chuàng)建一個P標(biāo)記節(jié)點(diǎn)oP,然后再用aColors數(shù)組中的每一個元素建立一個文本節(jié)點(diǎn)oText,然后再把每個文本節(jié)點(diǎn)放在oP節(jié)點(diǎn)中,最后把每個oP節(jié)點(diǎn)放在文檔碎片對象oFragment中。4)最后把文檔碎片對象oFragment2355用以下語句添加到頁面上:document.body.appendChild(oFragment);9、在特定節(jié)點(diǎn)后插入節(jié)點(diǎn)復(fù)習(xí):父節(jié)點(diǎn).insertBefore(新節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn))解決了在某節(jié)點(diǎn)之前插入新節(jié)點(diǎn)。如果想在某節(jié)點(diǎn)之后添加新節(jié)點(diǎn),是否有以下方法函數(shù)呢?父節(jié)點(diǎn).insertAfter(新節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn))其實(shí)情況是沒有些方法函數(shù),但我們可以自己定義一個在某節(jié)點(diǎn)后面插入一個新節(jié)點(diǎn)的函數(shù)。2356functioninsertAfter(newElement,targetElement){ varoParent=targetElement.parentNode;//首先找到目標(biāo)元素的父元素
if(oParent.lastChild==targetElement) //如果目標(biāo)元素已經(jīng)是最后一個子元素了
oParent.appendChild(newElement);//則直接用appendChild()加到子元素列表的最后
else //否則用insertBefore()插入到目標(biāo)元素的下一個兄弟元素之前
oParent.insertBefore(newElement,targetElement.nextSibling);}2357以后可以把以上自定義函數(shù)添加到需要的地方。h261.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>insertAfter()方法</title><scriptlanguage="javascript">2358functioninsertAfter(newElement,targetElement){ varoParent=targetElement.parentNode; //首先找到目標(biāo)元素的父元素
if(oParent.lastChild==targetElement) //如果目標(biāo)元素已經(jīng)是最后一個子元素了
oParent.appendChild(newElement);//則直接用appendChild()加到子元素列表的最后
else //否則用insertBefore()插入到目標(biāo)元素的下一個兄弟元素之前
oParent.insertBefore(newElement,targetElement.nextSibling);}2359functioninsertP(){ varoOldP=document.getElementById("myTarget"); varoNewP=document.createElement("p"); //新建節(jié)點(diǎn)
varoText=document.createTextNode("這是一個感人肺腑的故事"); oNewP.appendChild(oText); insertAfter(oNewP,oOldP); //插入節(jié)點(diǎn)}</script></head>2360<bodyonload="insertP()"> <pid="myTarget">插入到這行文字之后</p> <p>也就是插入到這行文字之前,但這行沒有id,也可能不存在</p></body></html>2361十六、使用非標(biāo)準(zhǔn)DOMinnerHTML屬性除前面介紹了一系列標(biāo)準(zhǔn)DOM方法以外,innerHTML屬性由于使用方便,也得到了主流瀏覽器的支持。此屬性表示某個標(biāo)記之間的所有內(nèi)容,包括代碼本身。此屬性可以讀取,也可以設(shè)置。需要說明的是,innerHTML屬性并不是W3CDOM的標(biāo)準(zhǔn)組成部分。雖然在插入大段的HTML內(nèi)容時可以又快又簡捷地完成任務(wù),但它可以直接顯示標(biāo)記里或者對象里的內(nèi)容,也可以被替換內(nèi)容。2362h262.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>innerHTML</title><scriptlanguage="javascript">functionmyDOMInnerHTML(){varmyDiv=document.getElementById("myTest"); 2363alert(myDiv.innerHTML); //直接顯示innerHTML的內(nèi)容
//修改innerHTML,可直接添加代碼
myDiv.innerHTML="<imgsrc='01.jpg'title='情人坡'>";}</script></head><bodyonload="myDOMInnerHTML()"><divid="myTest"> <span>圖庫</span> <p>這是一行用于測試的文字</p>2364</div></body></html>2365十七、DOM與CSS1、頁面的三位一體:html或者xhtml的標(biāo)記負(fù)責(zé)創(chuàng)建網(wǎng)頁的結(jié)構(gòu),即顯示內(nèi)容和顯示順序由各標(biāo)記來決定。而顯示的效果則由CSS來一確定,我們把顯示效果叫表現(xiàn)。而行為主要是事件發(fā)生時的響應(yīng)方式,由JS(JavaScript)來負(fù)責(zé)。所謂三位一體,就是結(jié)構(gòu)、表現(xiàn)和行為為一體。其實(shí)在HTML中結(jié)構(gòu)、表現(xiàn)和行為也有重疊的地方。在CSS里也有行為,例如偽選擇器hover等。23662、className屬性DOM都是與結(jié)構(gòu)層打交道的,例如查找節(jié)點(diǎn)、添加節(jié)點(diǎn)等。而DOM還有一個非常實(shí)用的className屬性,可以修改某個節(jié)點(diǎn)的CSS類別。h263.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>className屬性</title>2367<styletype="text/css">.myUL1{ color:#0000FF; font-family:Arial; font-weight:bold;}.myUL2{ color:#FF0000; font-family:Georgia,"TimesNewRoman",Times,serif;}2368</style><scriptlanguage="javascript">functioncheck(){ varoMy=document.getElementsByTagName("ul")[0]; oMy.className="myUL2"; //修改CSS類}</script></head>2369<body> <ulonclick="check()"class="myUL1"> <li>HTML</li> <li>JavaScript</li> <li>CSS</li> </ul></body></html>效果提示:剛開始時顯示紅色字符,單周網(wǎng)頁上的文字顯示字符顏色轉(zhuǎn)換為紅色。2370文字原來ul標(biāo)記引用了myUL1類選擇器,單擊文字后,調(diào)用了check()函數(shù),結(jié)果用className屬性修改了ul標(biāo)記的className,自然原來引用的myUL1類選擇器失效,新引用了myUL2類選擇器,結(jié)果修改了ul標(biāo)記的類選擇器,字符顯示紅色。2371單擊文字上例由于myUL1類選擇器和myUL2類選擇器都是更改字符顏色,屬于同類屬性修改。在這種情況下要用替換方式更改,即要用賦值語句更改舊類別選擇器為新類別選擇器,即:oMy.className="myUL2";如果遇到新類別選擇器的新屬性與舊的類別選擇器的屬性不同,則最好采用添加新屬性的方式進(jìn)行,即:oMy.className+="myUL2";此句代碼相當(dāng)于:<ulclass="myUL1myUL2">2372h264.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>追加CSS類別</title><styletype="text/css">.myUL1{ color:#0000FF; font-family:Arial; 2373font-weight:bold;}.myUL2{ text-decoration:underline;}</style><scriptlanguage="javascript">functioncheck(){ varoMy=document.getElementsByTagName("ul")[0]; oMy.className+="myUL2"; //追加CSS類2374}</script></head><body> <ulonclick="check()"class="myUL1"> <li>HTML</li> <li>JavaScript</li> <li>CSS</li> </ul></body></html>23752376單擊文字第二部分JavaScript、CSS、DOM高級篇2377一、事件流eventflow有了JS,就可以讓用戶不僅可以觀看網(wǎng)頁上的內(nèi)容,還可以與瀏覽的畫面進(jìn)行交互。瀏覽器的事情模型分為兩種:捕獲型事件(eventcapturing)和冒泡事件(dubbedbubbling)IE瀏覽器不支持捕獲事件,只支持冒泡事件。冒泡事件:當(dāng)鼠標(biāo)單擊了某個低級元素,則此事情將逐層返回到它的上擊元素,最后到達(dá)document元素位置。h265.html文件內(nèi)容2378<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>冒泡型事件</title><scriptlanguage="javascript">functionadd(sText){ varoDiv=document.getElementById("display"); oDiv.innerHTML+=sText;2379 //輸出點(diǎn)擊順序}</script></head><bodyonclick="add('body<br>');"> <divonclick="add('div<br>');"> <ponclick="add('p<br>');">ClickMe</p> </div> <divid="display"></div></body></html>2380選定P標(biāo)記,然后一級級向上冒泡觸發(fā)其它標(biāo)記里的事件。23812382其實(shí),Chrome瀏覽器也有冒泡事件流,如下圖所示:結(jié)果實(shí)驗(yàn)證明,其它瀏覽器同樣有冒泡事件流。例如Safiri瀏覽器,Opera瀏覽器,F(xiàn)irefox瀏覽器,QQ瀏覽器和360瀏覽器等。捕獲事件從document開始向最后一級元素傳遞鼠標(biāo)單擊事件流。當(dāng)事件流通過各個元素時各元素都會接收到鼠標(biāo)事件。捕獲事件一般不用,IE瀏覽器也不支持。23832384二、事件監(jiān)聽在AS3.0中,有監(jiān)聽函數(shù)addEventListener(),專門監(jiān)聽事件用的函數(shù)。而在JS中,添加onclick函數(shù)就可以隨時監(jiān)聽事件發(fā)生沒有,然后當(dāng)事件產(chǎn)生以后直接調(diào)用onclick=后面的響應(yīng)函數(shù),一般的表達(dá)式:監(jiān)聽函數(shù)onclick="函數(shù)函數(shù)()"這種監(jiān)聽方式在主流瀏覽器里都能使用,包括IE9.0瀏覽器也能使用。但在低版本的IE瀏覽器里有自己的監(jiān)聽函數(shù)和監(jiān)聽調(diào)用函數(shù)的方式:[object].attachEvent("event_hander","fnHandler");[object].detachEvent("event_hander","fnHandler");其中,event_hander表示事件名稱,如onclick,onload,onmouseover等,而fnHandler表示事件響應(yīng)函數(shù)名稱。IE瀏覽器的監(jiān)聽和調(diào)用響應(yīng)函數(shù)的方式與flash中在AS3.0里使用監(jiān)聽函數(shù)和調(diào)用響應(yīng)函數(shù)的方式完全一樣,只是使用的監(jiān)聽函數(shù)名有區(qū)別。h266.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""">2385<html><head><title>監(jiān)聽函數(shù)</title><scriptlanguage="javascript">window.onload=function(){ varoP=document.getElementById("myP"); //找到對象
oP.onclick=function(){ //設(shè)置事件監(jiān)聽函數(shù)
alert('我被點(diǎn)擊了'); }}2386</script></head><body> <div> <pid="myP">ClickMe</p> </div></body></html>注釋:window.onload=function(){。。表示當(dāng)文檔加載完成以后,就執(zhí)行=號右邊的函數(shù)。2387在標(biāo)記里使用onclick=時,如果=號右邊是函數(shù)名,則一般要添加"號,而如果是function(){}形式函數(shù),則不添加"號。在JS代碼中,如果不在標(biāo)記里寫事件代碼,而右邊的形式函數(shù)也不添加"號,例如:oP.onclick=function(){ //設(shè)置事件監(jiān)聽函數(shù)
alert('我被點(diǎn)擊了'); }h267.html文件內(nèi)容2388<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>IE的監(jiān)聽函數(shù)</title><scriptlanguage="javascript">functionfnClick(){ alert("我被點(diǎn)擊了"); oP.detachEvent("onclick",fnClick); //點(diǎn)擊了一次后刪除監(jiān)聽函數(shù),不能寫成fnClick()2389}varoP;window.onload=function(){ oP=document.getElementById("myP"); //找到對象
oP.attachEvent("onclick",fnClick);//添加監(jiān)聽函數(shù),注意fnClick函數(shù)不能寫成fnClick()}</script></head>2390<body> <div> <pid="myP">ClickMe</p> </div></body></html>結(jié)果:IE9.0瀏覽器和其它主流瀏覽器都不能用attachEvent()監(jiān)聽函數(shù)和除去監(jiān)聽函數(shù)detachEvent()。在IE6.0上能夠運(yùn)行此網(wǎng)頁代碼!2391上例通過實(shí)驗(yàn)告訴我們,目前的上流瀏覽器都能使用onclick=的方法來監(jiān)聽事件,而IE6.0等低版本的瀏覽器要用attachEvent()函數(shù)來持續(xù)地監(jiān)聽事件,并用detachEvent()來刪除持續(xù)地監(jiān)聽事件。2392當(dāng)采用了兩個監(jiān)聽函數(shù)時,響應(yīng)會怎么樣?結(jié)論:會響應(yīng)后面那個監(jiān)聽函數(shù)。h268.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>多個監(jiān)聽函數(shù)</title><scriptlanguage="javascript">2393/*functionfnClick1(){ alert("我被fnClick1點(diǎn)擊了");}functionfnClick2(){ alert("我被fnClick2點(diǎn)擊了");}*/2394varoP;window.onload=function(){ oP=document.getElementById("myP"); //找到對象
//添加監(jiān)聽函數(shù)1 oP.onclick=function(){ alert("我被fnClick1點(diǎn)擊了");}//添加監(jiān)聽函數(shù)2 oP.onclick=function(){ alert("我被fnClick2點(diǎn)擊了");}}2395</script></head><body><div><pid="myP">ClickMe</p></div></body></html>2396在上例中,值得注意是,在監(jiān)聽函數(shù)右邊,即在oP.onclick=右邊放置了一個形式函數(shù),如果在此處用實(shí)際函數(shù)調(diào)用,情況會怎樣?把上例中以下代碼的注釋符去掉,再更改代碼如下,成為h269.html文件的內(nèi)容,那么結(jié)果會怎么樣?結(jié)果:仍然是最后那個監(jiān)聽有響應(yīng)。h269.html文件內(nèi)容2397<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>多個監(jiān)聽函數(shù)</title><scriptlanguage="javascript">functionfnClick1(){ alert("我被fnClick1點(diǎn)擊了");}2398functionfnClick2(){ alert("我被fnClick2點(diǎn)擊了");}</script></head><body><div><pid="myP">ClickMe</p></div><scriptlanguage="javascript">2399var oP=document.getElementById("myP"); //找到對象
//添加監(jiān)聽函數(shù)1 oP.onclick=fnClick1;//添加監(jiān)聽函數(shù)2 oP.onclick=fnClick2; </script></body></html>var oP=document.getElementById("myP");//找到對象2400//添加監(jiān)聽函數(shù)1,fnClick1不能寫成fnClick1() oP.onclick=fnClick1;//添加監(jiān)聽函數(shù)2,fnClick2不能寫成fnClick2() oP.onclick=fnClick2; </script></body></html>注:如果函數(shù)fnClick1()有形式參數(shù),則在引用時要使用實(shí)參,那么在調(diào)用時要有fnClick1(實(shí)參)。2401從上例的結(jié)果可以看出,當(dāng)有兩個監(jiān)聽函數(shù)時,后面那個監(jiān)聽函數(shù)有響應(yīng),前面那個沒有響應(yīng)。ie6.0低版本的瀏覽器使用attachEvent()監(jiān)聽函數(shù),在主流瀏覽器里已經(jīng)不適用了。還好,dom有標(biāo)準(zhǔn)的監(jiān)聽方法。標(biāo)準(zhǔn)的DOM定義了兩個方法分別來添加和刪除監(jiān)聽函數(shù):2402[object].addEventListener("event_name",fnHandler,bCapture);[object].removeEventListener("event_name",fnHandler,bCapture);一看這兩個函數(shù),與AS3.0的監(jiān)聽函數(shù)和除去監(jiān)聽函數(shù)在形式上和函數(shù)名上完全一樣,太棒了!event_name是事件名,事件名與以前不一樣了,例如click,mousemove等,不再使用onclick,onmousemove等了。fnHandler是響應(yīng)函數(shù),與AS3.0相同。bCapture是邏輯值,當(dāng)為true時事件流為捕獲型,而為false時事件流為冒泡型。h270.html文件內(nèi)容2403<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"""><html><head><title>標(biāo)準(zhǔn)DOM的事件監(jiān)聽</title><scriptlanguage="javascript">functionfnClick1(){ alert("我被fnClick1點(diǎn)擊了");//oP.removeEventListener("click",fnClick2,false); //刪除監(jiān)聽函數(shù)22404}functionfnClick2(){ alert("我被fnClick2點(diǎn)擊了");}varoP;window.onload=function(){ oP=document.getElementById("myP"); //找到對象
oP.addEventListener("click",fnClick1,false); //添加監(jiān)聽函數(shù)1 oP.addEventListener("click",fnClick2,false); //添加監(jiān)聽函數(shù)22405}</script></head><body> <div> <pid="myP">ClickMe</p> </div></body></html>24062407上例實(shí)驗(yàn)結(jié)果說明,addEventListener監(jiān)聽器函數(shù)在主流瀏覽器里和IE瀏覽器里都使用正常,并且監(jiān)聽響應(yīng)的順序也正常了。在上例中,如果把下句代碼的注釋符除去,結(jié)果只有fnClick1有響應(yīng),而fnClick2沒有響應(yīng)。//oP.removeEventListener("click",fnClick2,false);取元素以后,然后使用addEventListener函數(shù)和removeEventListener函數(shù),對所有瀏覽器都有效,以后要多使用這兩個函數(shù),太棒了。2408三、事件對象瀏覽器中的事件都是以對象形式存在的。IE瀏覽器與標(biāo)準(zhǔn)的DOM瀏覽器之間在獲取事件對象時存在差別。IE瀏覽器中的事件對象是window對象的一個屬性event,訪問時通常采用如下方法:oP.onclick=function(){varoEvent=window.event;}盡管event是window對象的屬性,但event對象還是只能在事件發(fā)生時被訪問,所有的事件處理函數(shù)執(zhí)行完之后,該對象就消失了。2409而標(biāo)準(zhǔn)的DOM中規(guī)定event對象必須作為惟一的參數(shù)傳給事件處理函數(shù),因此類似Firefox瀏覽器中訪問事件對象時通常將其作為參數(shù),代碼如下:oP.onclick=function(oEvent){}因此,為了兼容IE和類似于Firefox的瀏覽器,通常采用以下方法獲取事件對象,其實(shí)就是把兩類瀏覽器獲取事件對象的代碼合二為一:oP.onclick=function(oEvent){if(window.event)oEvent=window.event;}2410瀏覽器取得了事件對象以后就可以通過一系列的事件對象的屬性和方法函數(shù)來處理具體的事件了。例如鼠標(biāo)事件、鍵盤事件和瀏覽器事件等。在下表中羅列了事件常用的屬性和方法。在下表中可以看出,標(biāo)準(zhǔn)DOM瀏覽器與IE瀏覽器在常用事件屬性和方法上多數(shù)相同。在下表中,type屬性對所有瀏覽器兼容,它獲取事件類型,返回類似于click、mousemove等事件類型的值。varsType=oEvent.type這對于同一函數(shù)處理多種事件十分有用。24112412h271.html文件內(nèi)容<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年浙教新版六年級英語下冊階段測試試卷
- 2025年人教版PEP七年級地理上冊月考試卷含答案
- 2025年度文化創(chuàng)意產(chǎn)業(yè)合作開發(fā)合同范本3篇
- 2025年滬科版高三語文上冊階段測試試卷含答案
- 2025年統(tǒng)編版2024二年級語文下冊月考試卷
- 2025年外研銜接版九年級物理上冊月考試卷含答案
- 2025年西師新版選擇性必修3物理下冊月考試卷
- 二零二五年度網(wǎng)絡(luò)安全SaaS產(chǎn)品銷售與服務(wù)合同
- 2025年青島版六三制新四年級數(shù)學(xué)下冊階段測試試卷含答案
- 2025年統(tǒng)編版2024四年級數(shù)學(xué)上冊月考試卷
- 基樁靜荷載試驗(yàn)理論考試題庫(含答案)
- 道路工程停車位鋪裝工程施工方案
- 頸椎椎間盤摘除護(hù)理查房
- 標(biāo)識牌單元工程施工質(zhì)量驗(yàn)收評定表
- GB/T 3519-2023微晶石墨
- (承諾書)變壓器售后服務(wù)承諾書
- 人教版七年級上冊數(shù)學(xué)期末動點(diǎn)問題壓軸題專項(xiàng)訓(xùn)練(含答案)
- 公路工程隨機(jī)抽樣一覽表(路基路面現(xiàn)場測試隨機(jī)選點(diǎn)方法自動計(jì)算)
- 安全生產(chǎn)費(fèi)用提取及使用計(jì)劃
- 貨幣形式的發(fā)展
- 2021版中醫(yī)癥候醫(yī)保對應(yīng)中醫(yī)癥候醫(yī)保2
評論
0/150
提交評論