1. 操作 HTML
set/get/removeAttribute
设置/获取/删除 当前元素的某一个属性
var oBox = document.getElementById('box');
//=> 基于 Attribute 等 DOM 方法完成自定义属性的设置
oBox.setAttribute('myColor', 'red'); //=> 设置
oBox.getAttribute('myColor'); //=> 获取
oBox.removeAttribute('myColor'); //=> 删除
2. 操作对象
通过点或方括号来获取和修改,通过 delete
删除
//=> 把当前元素作为一个对象,在对象对应的堆内存中新增一个自定义属性
oBox.myIndex = 10; //=> 设置
oBox.myIndex //=> 获取
delete oBox.myIndex //=> 删除
3. 区别
这两种机制属于独立的运作体制,不能相互混淆使用。
第一种是基于对象键值对操作方式,修改当前元素对象的堆内存空间来完成
第二种是直接修改页面中 HTML 标签的结构来完成(此种方法设置的自定义属性可以在结构上呈现出来)
基于 setAttribute
设置的自定义属性值都是字符串
一般使用第一种,简单操作。第二种会呈现在结构中,会被别人看到,容易受到攻击。
一般来说,由第一种方式添加的自定义属性,也只能由第一种方式获取,由第二种方式添加的自定义属性,也只能由第二种方式获取到。
(1)通过规范的
data-*
设置的自定义属性,可以通过oBox.dataset.* = xx
设置,同样会反映到页面中,这两种方式都可以获取
(2)一些内置的属性,如:src、href、style 等,都是可以通过两种方式来修改和获取的,同样也会在页面反映。