中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DOM-Element類型

發布時間:2020-07-20 23:02:07 來源:網絡 閱讀:308 作者:吳金瑞 欄目:網絡安全

    

Element類型

Element類型用于表現XML或HTML元素,提供了對元素標簽名、子節點及特性的訪問。Element節點具有以下特征:

nodeType的值為1
nodeName的值為元素的標簽名
nodeValue的值為null
parentNode的值為Document或Element
其子節點可能是Element、Text、CDATASection、EntityReference、ProcessingInstruction或者Comment

要訪問元素的標簽名,可以使用nodeName屬性、也可以使用tagName屬性;這兩個屬性會返回相同的值

1          <div id="myDiv"></div>

可以像下面這樣取得這個元素以及標簽名

1          var div = document.getElementById('myDiv');2          console.log(div.nodeName); //"DIV"3          console.log(div.tagName == div.nodeName); //true

div.tagName實際上輸出的是大寫形式,通常轉換為小寫形式

1         if (element.tagName.toLowerCase() == "div"){//這樣最好2             //在此執行操作3         }

 

1、HTML元素

所有HTML元素都由HTMLElement類型表示,不是直接通過這個類型,也是通過它的子類型來表示。每個HTML元素都存在下列標準特性:

id,元素在文檔中的唯一標識符。
title,有關元素的附加說明信息,一般通過工具提示條顯示出來。
lang,元素內容的語言代碼,很少使用。
dir,語言的方向
className,與元素的class特性相對應

DOM-Element類型

1         <div id="myDiv" class="bd" title="Body text" lang="en" dir="ltr"></div>2 3         var div = document.getElementById('myDiv');4         console.log(div.id); //myDiv5         console.log(div.className); //bd6         console.log(div.title); //BOdy text7         console.log(div.lang); //en8         console.log(div.dir); //ltr

DOM-Element類型

當然也可以給他們賦予新值

 

2、取得特性

操作特性的DOM方法主要有三個:getAttribute()、setAttribute()、removeAttribute()

1         var div = document.getElementById('myDiv');2         console.log(div.getAttribute('id'));//myDiv3         console.log(div.getAttribute('class')); //bd4         console.log(div.getAttribute('title')); //BOdy text5         console.log(div.getAttribute('lang')); //en6         console.log(div.getAttribute('dir'));//ltr

如果給定的名稱特性不存在,則返回null;

通過getAttribute()方法也可以取得自定義特性,例如:

1         <div id="myDiv" my_special_attribute="hello!"></div>2         var value = div.getAttribute('my_special_attribute');

任何元素的所有特性,也都可以通過DOM元素本身的屬性來訪問。不過只有公認的特性才會以屬性的形式添加到DOM對象中。

1         <div id="myDiv" align="left" my_special_attribute="hello!"></div>

因為id和align在HTML中是<div>公認的特性,因此該元素的DOM對象中也將存在對應的屬性。不過自定義特性my_special_attribute在Safari、Opera、Chrome及Firefox中是不存在的;但IE卻會為
自定義特性也創建屬性,例如:

1         console.log(div.id) //myDiv2         console.log(div.my_special_attribute) //underfined(IE除外)

有兩類特殊的特性,他們雖然有對應的屬性名,但屬性的值與通過getAttribute()返回的值并不相同。第一類就是style,在通過getAttribute()訪問時,返回的是css文本,而通過屬性來訪問他則返回的是一個對象。第二類就是onclick這樣的時間處理程序。通過getAttribute()訪問時,返回的是相應代碼的文本,而通過屬性來訪問時,則會返回一個JavaScript函數

由于存在這些差別,在通過JavaScript以編程方式操作DOM時,開發人員經常不使用getAttribute()而是只使用對象的屬性。只有在取得自定義特性值的情況下,才會使用getAttribute()方法。

 

3、設置特性

setAttribute()接受兩個參數:要設置的特姓名和值。如果特性已經存在,setAttribute()會以指定的值替換現有的值;如果特性不存在則創建改屬性并設置相應的值

1         div.setAttribute('id','someOtherId');2         div.setAttribute('class','ft');

所有特性都是屬性,所以可以直接給屬性賦值:

1         div.id = 'someOtherId';

不過,像下面這樣為DOM元素添加一個自定義的屬性,該屬性不會自動成為元素的特性

1         div.mycolor = "red";2         console.log(div.getAttribute('mycolor')); //null(IE除外)

removeAttribute()用于徹底刪除元素的特性:

1         div.removeAttribute('class');

 

4、attribute屬性

Element類型是使用attribute屬性的唯一一個DOM節點類型。attributes屬性中包含一個NamedNodeMap,與NodeList類似,也是一個“動態”集合。元素的每一個特性都由一個Attr節點表示,每個節點都保存在NamedNodeMap對象中。NamedNodeMap對象擁有下列方法。

getNamedItem(name):返回nodeName屬性等于name的節點;
removeNamedItem(name):從列表中移除nodeName屬性等于name的節點
setNamedItem(node):向列表中添加節點,以節點的nodeName屬性為索引
item(pos):返回位于數字pos位置處的節點

attributes屬性中包含一系列節點,每個節點的nodeName就是特性的名稱,而節點的nodeValue就是特性的值。要取得id特性,可以使用以下代碼:

1         var id = element.attributes.getNamedItem("id").nodeValue;

以下是使用方括號語法的簡寫形式:

1         var id = element.attributes["id"].nodeValue = "someOtherId";

調用removeNamedItem()方法與在元素上調用removeAttribute()方法的效果一樣:直接刪除給定名稱的特性。他們的唯一區別就是removeNamedItem()返回表示刪除特性的Attr節點

以下代碼展示了如何迭代元素的每個特性,然后將他們構造成name="value" name="value"這樣的字符串格式

DOM-Element類型

 1         function outputAttributes(element){ 2             var pairs = new Array(), 3                 attrName, 4                 attrValue, 5                 i, 6                 ien; 7  8             for(i=0,len=element.attributes.length;i<len;i++){ 9                 attrName = element.attributes[i].nodeName;10                 attrValue = elemetn.attributes[i].nodeValue;11                 if(element.attributes[i].specified){12                 pairs.push(attrName + "=\"" + attrValue + "\"");13                 }14             }15             return pairs.join(" ");16         }

DOM-Element類型

 

5、創建元素

使用document.createElement()方法可以創建新元素。這個方法只接受一個參數,即要創建元素的標簽名。例如創建一個<div>元素。

1         var div = document.createElement("div");

在使用createElement()方法創建新元素的同時,也為新元素設置了ownerDocuemnt屬性。此時,還可以操作元素的特性,為它添加更多的子節點,以及執行其他的操作

1         div.id = "myNewDiv";2         dov.className = "box";

要把這些新元素添加到文檔樹中可以使用appendChild()、insetrBefore()或者replaceChild()方法。

 

6、元素的子節點

元素可以由任意數目的子節點和后代節點,不同瀏覽器在看待這些節點方面存在顯著的不同,以下面的代碼為例:

1         <ul id="myList">2             <li>Item 1</li>3             <li>Item 2</li>4             <li>Item 3</li>5         </ul>

如果是IE累解析這些代碼,那么<ul>元素會有3個節點,分別是3個<li>元素。但如果是在其他瀏覽器中。<ul>元素都會有7個元素,包過3個<li>元素和4個文本節點(表示<li>元素之間的空白符)。
如果像下面這樣將元素間的空白符刪除,那么所有的瀏覽器都會返回相同的數目的子節點

        <ul id="myList"><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul>

如果需要通過childNodes屬性遍歷子節點,那么通常都要先檢查一下nodeType屬性,如下:

1         for(var i=0;len=element.childNodes.length;i<len;i++){2             if(element.childNodes[i]nodeType == 1){3                 //執行某些操作4             }5         }

如果像通過某個特定的標簽名取得子節點或后代節點可以使用getElementsByTagName()方法。

1         var ul = documet.getElementById('myList');2         var items = ul.getElementsByTagName('li');

要注意的是,這里<ul>的后代中只包含直接子元素。不過,如果它包含更多層次的后代元素,那么各個層次中包含的<li>元素也都會返回。

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岑巩县| 新源县| 东源县| 射阳县| 铅山县| 娄底市| 广德县| 靖宇县| 秀山| 罗平县| 边坝县| 轮台县| 纳雍县| 筠连县| 如东县| 鄯善县| 永州市| 苏尼特右旗| 泸水县| 泰州市| 措勤县| 扎赉特旗| 元氏县| 彭阳县| 营口市| 资兴市| 运城市| 临安市| 垦利县| 新安县| 确山县| 柳江县| 策勒县| 吴堡县| 叶城县| 嘉荫县| 浦城县| 习水县| 通许县| 将乐县| 黑龙江省|