元素節點
元素節點就是HTML標簽元素,元素節點主要提供了對元素標簽名、子節點及屬性的訪問;
元素節點的三個node屬性:nodeType:1、nodeName/TagName:元素的標簽名大寫、nodeValue:null;
其父節點 parentNode 指向包含該元素節點的元素節點 Element 或文檔節點 Document;
元素的 childNodes 屬性中包含了它的所有子節點,這些子節點可能是元素、文本、注釋、處理指令節點;
childNodes 結合 NodeType 可以檢查有幾個元素子節點:
<ul class="list" id="list"> <li class="in"></li> <li class="in"></li> </ul> <script> var oList = document.getElementById('list'); var children = oList.childNodes; var num = 0; for(var i = 0; i < children.length; i++){ if(children[i].nodeType == 1){ num++; } } console.log(num);//2 有2個元素子節點 </script>操作屬性的方法主要有hasAttribute()、getAttribute()、setAttribute()、removeAttribute()四個,可以針對任何屬性使用,包括那些以HTMLElement類型屬性的形式定義的屬性;
obj.hasAttribute(attr)方法返回一個布爾值,表示當前元素節點是否包含指定屬性; IE6/IE7不支持 hasAttribute() 方法; obj.hasAttribute(attr)檢測 class 屬性時,直接用 class 就可以了,不要用className; obj.hasAttribute(attr)檢測 for屬性時,直接用 for就可以了,不要用htmlFor; <div class="wrapper" id='test' for="nice" style="width:200px;height:100px;background:#f0f">123</div> <script type="text/javascript"> var oTest = document.getElementById('test'); //IE6/IE7不支持hasAttribute方法 console.log(oTest.hasAttribute('class'));//true console.log(oTest.hasAttribute('className'));//false console.log(oTest.hasAttribute('id'));//true console.log(oTest.hasAttribute('style'));//true console.log(oTest.hasAttribute('for'));//true console.log(oTest.hasAttribute('htmlFor'));//false </script> obj.getAttribute(attr)方法用于取得屬性的值,如果給定名稱的屬性不存在或無參數則返回null; obj.getAttribute(attr)獲取 class 時,直接用 class 就可以了;IE6/IE7除外,IE6/IE7的 getAttribute(attr) 方法要用 className; obj.getAttribute(attr)獲取 for時,直接用 for就可以了; obj.setAttribute(attr,value)方法接受兩個參數:要設置的屬性名和值,如果已經存在,則替換現有的值。如果屬性不存在,則創建該屬性并設置相應的值。該方法無返回值; obj.setAttribute(attr,value)設置 class 時,直接用 class 就可以了; obj.setAttribute(attr,value)設置 for 時,直接用 for 就可以了; obj.setAttribute(attr,value)設置 style 時,直接用 style 就可以了;在 IE7及以下,用 obj.style.setAttribute("cssText",value); 這里的 style 只是行間樣式; 我們一般用 obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj)[attr]; 來獲取元素當前樣式;
新聞熱點
疑難解答
圖片精選