DOM節(jié)點(diǎn)信息、DOM屬性、3大節(jié)點(diǎn)、替換節(jié)點(diǎn)、查找設(shè)置屬性節(jié)點(diǎn)、創(chuàng)建刪除插入節(jié)點(diǎn)、innerHTML屬性、顯示彈出窗口 www.MyException.Cn 發(fā)布于:2013-03-21 10:08:17 瀏覽:35次 DOM節(jié)點(diǎn)信息、DOM屬性、三大節(jié)點(diǎn)、替換節(jié)點(diǎn)、查找設(shè)置屬性節(jié)點(diǎn)、創(chuàng)建刪除插入節(jié)點(diǎn)、innerHTML屬性、顯示彈出窗口
DOM節(jié)點(diǎn)信息、DOM屬性、三大節(jié)點(diǎn)、替換節(jié)點(diǎn)、查找設(shè)置屬性節(jié)點(diǎn)、創(chuàng)建刪除插入節(jié)點(diǎn)、innerHTML屬性、顯示彈出窗口 DOM節(jié)點(diǎn)信息 每個節(jié)點(diǎn)都擁有包含著關(guān)于節(jié)點(diǎn)某些信息的屬性。這些屬性是: nodeName(節(jié)點(diǎn)名稱) nodeValue(節(jié)點(diǎn)值) nodeType(節(jié)點(diǎn)類型) DOM屬性---nodeName nodeName 屬性含有某個節(jié)點(diǎn)的名稱。 var name = node.nodeName; 元素節(jié)點(diǎn)的 nodeName 是標(biāo)簽名稱 屬性節(jié)點(diǎn)的 nodeName 是屬性名稱 文本節(jié)點(diǎn)的 nodeName 永遠(yuǎn)是 #text 文檔節(jié)點(diǎn)的 nodeName 永遠(yuǎn)是 #document 注釋:nodeName 所包含的 html 元素的標(biāo)簽名稱永遠(yuǎn)是大寫的 DOM 屬性 -- nodeValue nodeValue:返回給定節(jié)點(diǎn)的當(dāng)前值(字符串) 如果給定節(jié)點(diǎn)是一個屬性節(jié)點(diǎn),返回值是這個屬性的值。 如果給定節(jié)點(diǎn)是一個文本節(jié)點(diǎn),返回值是這個文本節(jié)點(diǎn)的內(nèi)容。 如果給定節(jié)點(diǎn)是一個元素節(jié)點(diǎn),返回值是 null nodeValue 是一個 讀/寫 屬性,但不能對元素節(jié)點(diǎn)的 nodeValue 屬性設(shè)置值, 但可以為文本節(jié)點(diǎn)的 nodeValue 屬性設(shè)置一個值。 var li = document.getElementById(“li”); if(li.firstChild.nodeType == 3) li.firstChild.nodeValue = “國慶60年”; DOM 屬性 -- nodeType nodeType:返回一個整數(shù),這個數(shù)值代表著給定節(jié)點(diǎn)的類型。 nodeType 屬性返回的整數(shù)值對應(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 是個只讀屬性 三大節(jié)點(diǎn)--元素節(jié)點(diǎn) //測試元素節(jié)點(diǎn),輸出節(jié)點(diǎn)名稱,節(jié)點(diǎn)的類型,節(jié)點(diǎn)的值 var liElements=document.getElementsByTagName("li"); for(var i=0;i<liElements.length;i++){ alert(liElements[i].nodeName); alert(liElements[i].nodeType); alert(liElements[i].nodeValue); } 三大節(jié)點(diǎn)--屬性節(jié)點(diǎn) //測試屬性節(jié)點(diǎn),輸出屬性節(jié)點(diǎn)名稱,節(jié)點(diǎn)的類型,節(jié)點(diǎn)的值 var liElements=document.getElementsByTagName("li"); for(var i=0;i<liElements.length;i++){ var attrElement=liElements[i].getAttributeNode("value") alert("attrElement.nodeName "+attrElement.nodeName); alert("attrElement.nodeType "+attrElement.nodeType); alert("attrElement.nodeValue "+liElements[i].getAttribute("value")); } 三大節(jié)點(diǎn)--文本節(jié)點(diǎn) //測試元素節(jié)點(diǎn),輸出節(jié)點(diǎn)名稱,節(jié)點(diǎn)的類型,節(jié)點(diǎn)的值 var liElements=document.getElementsByTagName("li"); for(var i=0;i<liElements.length;i++){ alert(liElements[i].childNodes[0].nodeName); alert(liElements[i].childNodes[0].nodeType); alert(liElements[i].childNodes[0].nodeValue); liElements[i].childNodes[0].nodeValue="南京"; alert(liElements[i].childNodes[0].nodeValue);
//另一種讀取方法 alert(liElements[i].firstChild.nodeName); alert(liElements[i].firstChild.nodeType); alert(liElements[i].firstChild.nodeValue); } 替換節(jié)點(diǎn) replaceChild() 把一個給定父元素里的一個子節(jié)點(diǎn)替換為另外一個子節(jié)點(diǎn) var reference = element.replaceChild(newChild,oldChild); 返回值是一個指向已被替換的那個子節(jié)點(diǎn)的引用指針。 如果被插入的子節(jié)點(diǎn)還有子節(jié)點(diǎn),則那些子節(jié)點(diǎn)也被插入到目標(biāo)節(jié)點(diǎn)中 替換節(jié)點(diǎn)例子 // var cityElement=document.getElementById("city"); // var loveElement=document.getElementById("love"); // var cityChildElement=document.getElementById("beijing"); // var loveChildElement=document.getElementById("fankong"); // var oldElement=cityElement.replaceChild(loveChildElement,cityChildElement); // loveElement.appendChild(oldElement); // alert(oldElement.getAttribute("id")); var cityElement=document.getElementById("city"); cityElement.onclick=function(){ var cityChildElement=document.getElementById("beijing"); var loveChildElement=document.getElementById("fankong"); var oldElement=cityElement.replaceChild(loveChildElement,cityChildElement); loveElement.appendChild(oldElement); alert(oldElement.getAttribute("id")); } 查找屬性節(jié)點(diǎn) getAttribute() 返回一個給定元素的一個給定屬性節(jié)點(diǎn)的值 var attributeValue = element.getAttribute(attributeName); 給定屬性的名字必須以字符串的形式傳遞給該方法。 給定屬性的值將以字符串的形式返回,如果給定屬性不存在,getAttribute() 將返回一個空字符串. 通過屬性獲取屬性節(jié)點(diǎn) getAttributeNode(屬性的名稱)--Node <li name="beijing" id="bj">北京</li>
//通過屬性名獲取屬性的值 var bjElement=document.getElementById("bj"); var attributeValue=eduElement.getAttribute("name"); alert("attributeValue "+attributeValue);
//通過屬性名獲取屬性的節(jié)點(diǎn) var bjNode=eduElement.getAttributeNode("name"); alert(eduNode.nodeValue); alert(eduNode.nodeType); alert(eduNode.nodeName); 設(shè)置屬性節(jié)點(diǎn) setAttribute() 將給定元素節(jié)點(diǎn)添加一個新的屬性值或改變它的現(xiàn)有屬性的值。 element.setAttribute(attributeName,attributeValue); 屬性的名字和值必須以字符串的形式傳遞給此方法 如果這個屬性已經(jīng)存在,它的值將被刷新; 如果不存在,setAttribute()方法將先創(chuàng)建它再為其賦值。 <li id="bj" >北京</li> //獲取元素的引用 var bjElement=document.getElementById("bj"); //設(shè)置屬性值 bjElement.setAttribute("name","beijing"); //獲取設(shè)置的屬性值 var nameValue=bjElement.getAttribute("name"); alert("nameValue "+nameValue); 創(chuàng)建新元素節(jié)點(diǎn) createElement() 按照給定的標(biāo)簽名創(chuàng)建一個新的元素節(jié)點(diǎn)。方法只有一個參數(shù):將被創(chuàng)建的元素的名字,是一個字符串. var reference = document.createElement(element); 方法的返回值:是一個指向新建節(jié)點(diǎn)的引用指針。返回值是一個元素節(jié)點(diǎn),所以它的 nodeType 屬性值等于 1。 新元素節(jié)點(diǎn)不會自動添加到文檔里,新節(jié)點(diǎn)沒有 nodeParent 屬性,它只是一個存在于 JavaScript 上下文的對象. var pElement = document.createElement("p"); 設(shè)置屬性節(jié)點(diǎn) //創(chuàng)建一個新的元素 var pElement=document.createElement("li"); //設(shè)置屬性值 pElement.setAttribute("id","pid");
//獲取父元素 var loveElement=document.getElementById("love"); //在父元素中增加子元素 loveElement.appendChild(pElement); //通過id獲取剛創(chuàng)建的元素 var pidElement=document.getElementById("pid"); alert(pidElement.getAttribute("id")); 創(chuàng)建新文本節(jié)點(diǎn) createTextNode() 創(chuàng)建一個包含著給定文本的新文本節(jié)點(diǎn)。這個方法的返回值是一個指向新建文本節(jié)點(diǎn)引用指針。 var textNode = document.createTextNode(text); 方法只有一個參數(shù):新建文本節(jié)點(diǎn)所包含的文本字符串 方法的返回值:是一個指向新建節(jié)點(diǎn)的引用指針。它是一個文本節(jié)點(diǎn),所以它的 nodeType 屬性等于 3. 新元素節(jié)點(diǎn)不會自動添加到文檔里,新節(jié)點(diǎn)沒有 nodeParent 屬性
var pElementText=document.createElement("li"); var textElement=document.createTextNode("南京"); pElementText.appendChild(textElement); 插入節(jié)點(diǎn)(1) appendChild() 為給定元素增加一個子節(jié)點(diǎn): var newreference = element.appendChild(newChild). 給定子節(jié)點(diǎn) newChild 將成為給定元素節(jié)點(diǎn) element 的最后一個子節(jié)點(diǎn)。 方法的返回值是一個指向新增子節(jié)點(diǎn)的引用指針。 該方法通常與 createElement() createTextNode() 配合使用 新節(jié)點(diǎn)可以被追加給文檔中的任何一個元素 var newliElement=document.createElement("li"); var textNode=document.createTextNode("北京"); newliElement.appendChild(textNode); document.body.appendChild(newliElement);
var liElement=document.getElementsByTagName("li"); var textValue=liElement[0].firstChild.nodeValue; alert(textValue); 插入節(jié)點(diǎn)(2) insertBefore() 把一個給定節(jié)點(diǎn)插入到一個給定元素節(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 元素的一個子節(jié)點(diǎn)。 該方法通常與 createElement() 和 createTextNode() 配合使用 <ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul> <ul id="city01"> <li value="shanghai^" id="shanghai">上海</li> </ul> //獲取父節(jié)點(diǎn) var parentCityNode=document.getElementById("city"); //獲取子節(jié)點(diǎn) var beijingNode=document.getElementById("beijing"); var shanghaiNode=document.getElementById("shanghai"); //插入 parentCityNode.insertBefore(shanghaiNode,beijingNode); <ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul> //獲取父節(jié)點(diǎn) var parentCityNode=document.getElementById("city"); //獲取子節(jié)點(diǎn) var beijingNode=document.getElementById("beijing"); //創(chuàng)建節(jié)點(diǎn)newShanghaiNode var newShanghaiNode=document.createElement("li"); //創(chuàng)建newShanghaiNode節(jié)點(diǎn)的文本節(jié)點(diǎn) var newTextNode=document.createTextNode("上海"); //在創(chuàng)建的節(jié)點(diǎn)上增加文本 newShanghaiNode.appendChild(newTextNode); //插入節(jié)點(diǎn) parentCityNode.insertBefore(newShanghaiNode,beijingNode); 插入節(jié)點(diǎn)(3) DOM 沒有提供 insertAfter() 方法 function insertAfter(newElement,targetElement){ //獲取目標(biāo)元素的父節(jié)點(diǎn) var parentElement=targetElement.parentNode; //如果目標(biāo)元素是最后一個元素,則新元素插入到目標(biāo)元素的后面 if(parentElement.lastChild==targetElement){ parentElement.appendChild(newElement); }else{//如果目標(biāo)元素不是最后一個元素,則新元素插入到目標(biāo)元素的的 //下一個兄弟節(jié)點(diǎn)的前面,即目標(biāo)元素的后面 parentElement.insertBefore(newElement,targetElement.nextSibling); } } 刪除節(jié)點(diǎn) removeChild() 從一個給定元素里刪除一個子節(jié)點(diǎn) var reference = element.removeChild(node); 返回值是一個指向已被刪除的子節(jié)點(diǎn)的引用指針。 某個節(jié)點(diǎn)被removeChild()方法刪除時,這個節(jié)點(diǎn)所包含的所有子節(jié)點(diǎn)將同時被刪除。 <ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul> var ulElement=document.getElementById("city"); var liElement=document.getElementById("beijing"); ulElement.removeChild(liElement); 如果想刪除某個節(jié)點(diǎn),但不知道它的父節(jié)點(diǎn)是哪一個,parentNode 屬性可以幫忙。 <ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul> var liElement=document.getElementById("beijing"); var parentElement=liElement.parentNode; parentElement.removeChild(liElement); 遍歷節(jié)點(diǎn)樹 ChildNodes:返回一個數(shù)組,這個數(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)會返回一個空數(shù)組。 如果想知道某個元素有沒有子節(jié)點(diǎn),可以用 hasChildNodes 方法。 如果想知道某個元素有多少個子節(jié)點(diǎn),可以用 childNodes 數(shù)組的 length 屬性。 childNodes 屬性是一個只讀屬性。 獲取第一個子節(jié)點(diǎn) firstChild:該屬性返回一個給定元素節(jié)點(diǎn)的第一個子節(jié)點(diǎn),返回這個節(jié)點(diǎn)對象的指針。 var reference = node.firstChild; 文本節(jié)點(diǎn)和屬性節(jié)點(diǎn)都不可能包含任何子節(jié)點(diǎn),所以它們的 firstChild 屬性永遠(yuǎn)會返回 null。 某個元素的 firstChild 屬性等價于這個元素的 childNodes 節(jié)點(diǎn)集合中的第一個節(jié)點(diǎn),即: var reference = node.ChildNodes[0]; firstChild 屬性是一個只讀屬性。 獲取最后一個子節(jié)點(diǎn) lastChild:對應(yīng) firstChild 的一個屬性。 nextSibling: 返回一個給定節(jié)點(diǎn)的下一個兄弟節(jié)點(diǎn)。 parentNode:返回一個給定節(jié)點(diǎn)的父節(jié)點(diǎn)。 parentNode 屬性返回的節(jié)點(diǎn)永遠(yuǎn)是一個元素節(jié)點(diǎn),因?yàn)橹挥性毓?jié)點(diǎn)才有可能包含子節(jié)點(diǎn)。 document 節(jié)點(diǎn)的沒有父節(jié)點(diǎn)。 previousSibling:返回一個給定節(jié)點(diǎn)的上一個兄弟節(jié)點(diǎn) innerHTML屬性 瀏覽器幾乎都支持該屬性,但不是 DOM 標(biāo)準(zhǔn)的組成部分。 innerHTML 屬性可以用來讀,寫某給定元素里的 HTML 內(nèi)容。 <div id="city"></div> var divElement=document.getElementById("city"); divElement.innerHTML="<li value='beijing^'' id='beijing'>北京</li>"; 顯示彈出窗口(方案一) 語法: vReturnValue = window . showModalDialog ( sURL, vArguments , sFeatures ) 參數(shù)說明: sURL--必選參數(shù),用來指定對話框要顯示的文檔的URL。 vArguments--可選參數(shù),用來向?qū)υ捒騻鬟f參數(shù)。傳遞的參數(shù)類型不限,包括數(shù)組等。對話框通過window.dialogArguments來取得傳遞進(jìn)來的參數(shù)。 sFeatures--可選參數(shù),用來描述對話框的外觀等信息,可以使用一個或幾個,用分號“;”隔開。 顯示彈出窗口(方案二) window.opener 的用法 window.opener 返回的是創(chuàng)建當(dāng)前窗口的那個窗口的引用,比如點(diǎn)擊了a.htm上的一個鏈接而打開了b.htm,然后我們打算在b.htm上輸入一個值然后賦予a.htm上的一個id為“name”的text中,就可以寫為: |
|