- 特性(attribute)— 写在 HTML 中的内容。
- 属性(property)— DOM 对象中的内容。
HTML 特性有以下几个特征:
- 它们的名字是大小写不敏感的(
id
与ID
相同)。 - 它们的值总是字符串类型的。
操作特性的方法:
elem.hasAttribute(name)
— 检查是否存在这个特性。elem.getAttribute(name)
— 获取这个特性值。elem.setAttribute(name, value)
— 设置这个特性值。elem.removeAttribute(name)
— 移除这个特性。elem.attributes
— 所有特性的集合。
自定义特性
以 “data-” 开头的特性均被保留供程序员使用。它们可在 dataset
属性中使用。
例如,如果一个 elem
有一个名为 "data-about"
的特性,那么可以通过 elem.dataset.about
取到它。
像 data-order-state
这样的多词特性可以以驼峰式进行调用:dataset.orderState
示例1:自定义特性设置元素样式
<style>
.order[data-order-state="new"] {
color: green;
}
.order[data-order-state="pending"] {
color: blue;
}
.order[data-order-state="canceled"] {
color: red;
}
</style>
<div id="order" class="order" data-order-state="new">
A new order.
</div>
<script>
// 读取
alert(order.dataset.orderState); // new
// 修改
order.dataset.orderState = "pending"; // (*)
</script>
示例2: 根据特性查找元素,并读取特性值
<!DOCTYPE html>
<html>
<body>
<div data-widget-name="menu">Choose the genre</div>
<script>
// 获取它
let elem = document.querySelector('[data-widget-name]');
// 读取值
alert(elem.dataset.widgetName);
// 或
alert(elem.getAttribute('data-widget-name'));
</script>
</body>
</html>