(89)Wangdao.com第二十二天_JavaScript
阿新 • • 發佈:2018-11-01
屬性
屬性本身是一個物件(Attr 物件)
- Element.attributes
- 返回一個類似陣列的動態物件,成員是該元素標籤的所有屬性節點物件
-
- 屬性的實時變化都會反映在這個節點物件上。
-
- 其他型別的節點物件,雖然也有 attributes 屬性,但返回的都是 null,因此可以把這個屬性視為元素物件獨有的
-
- 取出每個屬性節點物件(不是取屬性值)
-
- 屬性節點物件有 name 和 value 屬性,對應該屬性的屬性名和屬性值,等同於 nodeName 屬性和 nodeValue 屬性
-
-
// <div id="result" bgcolor="yellow">孫悟空</div> var ele = document.getElementById("result"); ele.innerHTML = ( ele.attributes[0].name+"----"+ ele.attributes[
-
-
- 屬性節點物件有 name 和 value 屬性,對應該屬性的屬性名和屬性值,等同於 nodeName 屬性和 nodeValue 屬性
- 元素的標準屬性
- 有些 HTML 屬性名是 JavaScript 的保留字,
- 在JavaScript 中使用這些屬性時,必須改名
-
-
- for 屬性在使用時為 ele.htmlFor
- class 屬性在使用時為 ele.className
-
- 屬性操作的標準方法
適用所有屬性
只會返回字串
只接受標準名稱,即 class 就是 "class",for 屬性也可以直接使用
-
- Element.getAttribute()
- 返回一個數組,成員是當前元素的所有屬性的名字
- 遍歷某個節點的所有屬性
- 方法1
-
var ele = document.getElementById("result"); var attrs = ele.attributes; ele.innerHTML += "<br />"; var i = 0; for(i=0; i<attrs.length; i++){ ele.innerHTML += attrs[i].name+"----"+attrs[i].value+"<br />";
}
-
- 方法2
-
var mydiv = document.getElementById('mydiv'); mydiv.getAttributeNames().forEach(function (key) { var value = mydiv.getAttribute(key); console.log(key, value); })
-
- 方法1
- Element.getAttribute()
-
- Element.setAttribute()
- 為當前元素節點新增屬性
- 如果同名屬性已存在,則相當於編輯已存在的屬性
- 沒有返回值
- Element.setAttribute()
-
- Element.hasAttribute()
- 當前元素節點是否包含指定屬性
- Element.hasAttribute()
-
- Element.hasAttributes()
- 只要有一個屬性,就返回 true
- Element.hasAttributes()
-
- Element.removeAttribute()
- 移除指定屬性
- 沒有返回值
- Element.removeAttribute()
- 標準提供的 data-xxx 屬性 自定義屬性
- 元素節點物件的 dataset 屬性
- 通過 ele.dataset.foo 讀寫 data-foo 屬性
-
// <div id="mydiv" data-foo="bar"> var n = document.getElementById('mydiv'); n.dataset.foo; // 返回 bar n.dataset.foo = 'kjf';
-
- 通過 ele.dataset.foo 讀寫 data-foo 屬性
- 元素節點物件的 dataset 屬性
-
- 刪除一個 data-* 屬性,可以直接使用 delete 命令
-
-
var ele = document.getElementById("myDiv");
delete ele.dataset.foo;
-
-
- 刪除一個 data-* 屬性,可以直接使用 delete 命令
-
- data-屬性名 命名有限制
- 只能包含字母、數字、連詞線(-)、點(.)、冒號(:)和下劃線(_)
- 屬性名不應該使用 A 到 Z 的大寫字母
- 比如不能有 data-helloWorld 這樣的屬性名,而要寫成 data-hello-world
- data-屬性名 命名有限制
-
- data-屬性名 使用要注意
- 連詞線後面如果跟著一個小寫字母,那麼連詞線會被移除,該小寫字母轉為大寫字母,其他字元不變
- 反過來,dataset 的鍵名轉成屬性名時,所有大寫字母都會被轉成連詞線+該字母的小寫形式,其他字元不變。
- 比如,dataset.helloWorld 會轉成 data-hello-world
- data-屬性名 使用要注意