固有属性
标签天生自带的属性 比如class
id
title
等, 可以直接使用点语法操作
自定义属性
自己添加的属性,在DOM对象中找不到,无法使用点语法操作,必须使用专门的API.
getAttribute('属性名') // 获取自定义属性
setAttribute('属性名', '属性值') // 设置自定义属性
removeAttribute('属性名') // 删除自定义属性
注意点:attribute方法可以操作标签的自定义属性和固有属性
data-自定义属性
传统的自定义属性没有专门的定义规则,开发者随意定值,不够规范,所以在html5中推出来了专门的data-自定义属性 在标签上一律以data-开头
dataset属性存取data-*
自定义属性的值
这种方式通过访问一个元素的dataset属性来存取data-*
自定义属性的值。这个dataset属性是HTML5 Javascript API的一部分,用来返回一个所有选择元素的data-*
属性的DOMStringMap对象。
使用这种方法时,不是使用完整的属性名,如data-id来存取数据,应该去掉data-前缀。
还有一点特别注意的是:data-属性名如果包含了连字符,例如 data-id-and-class,连字符将被去掉,并转换为驼峰式的命名,前面的属性应该写成idAndClass。
<div id="div1" class="div1" data-id = "myId" data-class = "myClass" data-id-and-class = "Hello"></div>
<script>
var div = document.getElementById("div1");
var attr = div.attributes;
console.log(attr); //NamedNodeMap对象
var data = div.dataset;
console.log(data); //DOMStringMap对象
var id = div.id;
console.log(id); //div1
var myId = div.dataset.id;
console.log(myId); //myId
var iac = div.dataset.idAndClass;
console.log(iac); //Hello
</script>
如果你想删掉一个data-
属性,可以这么做:
delete div.dataset.id;