• 特性(attribute)— 写在 HTML 中的内容。
  • 属性(property)— DOM 对象中的内容。

HTML 特性有以下几个特征:

  • 它们的名字是大小写不敏感的(idID 相同)。
  • 它们的值总是字符串类型的。

操作特性的方法:

  • 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:自定义特性设置元素样式

  1. <style>
  2. .order[data-order-state="new"] {
  3. color: green;
  4. }
  5. .order[data-order-state="pending"] {
  6. color: blue;
  7. }
  8. .order[data-order-state="canceled"] {
  9. color: red;
  10. }
  11. </style>
  12. <div id="order" class="order" data-order-state="new">
  13. A new order.
  14. </div>
  15. <script>
  16. // 读取
  17. alert(order.dataset.orderState); // new
  18. // 修改
  19. order.dataset.orderState = "pending"; // (*)
  20. </script>

示例2: 根据特性查找元素,并读取特性值

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <div data-widget-name="menu">Choose the genre</div>
  5. <script>
  6. // 获取它
  7. let elem = document.querySelector('[data-widget-name]');
  8. // 读取值
  9. alert(elem.dataset.widgetName);
  10. // 或
  11. alert(elem.getAttribute('data-widget-name'));
  12. </script>
  13. </body>
  14. </html>