Как работат метод dataset в js?

Аватар пользователя Кирилл Ерохин
Кирилл Ерохин
22 ноября 2022

Свойство .dataset, позволяет считывать, или устанавливать любые дата-атрибуты на HTML-элементе. Дата атрибуты используются, чтобы хранить значения на элементах в HTML.

Например:

<p data-id="1" data-article="3">Дата-атрибут — это пользовательский атрибут на элементе</p>
<div>Container</div>

Обращение к свойству .dataset вернёт объект со всеми дата-атрибутами, которые есть на элементе.

const p = document.querySelector('p')

console.log(p.dataset)
// { id: '1', article: '3' }

// можно обратится к конкретному атрибуту как к свойству
console.log(p.dataset.article)
// '3'

Если дата-атрибутов на элементе нет, то вернётся пустой объект:

const container = document.querySelector('div')

console.log(container.dataset)
// {}

Добавляем дата-атрибут к элементу. Название поля должно быть без префикса data-, браузер автоматически подставит его. Атрибуты состоящие из нескольких слов записываются в .dataset c помощью camelСase, а в HTML будут иметь названия в kebab-case. В значениях атрибутов в HTML могут быть только строки, поэтому любое значение будет автоматически приведено к строке.

Имеем

<p>Все не строковые значения будут приводиться к строке.</p>

Добавляем

const p = document.querySelector('p')

p.dataset.page = 42;
p.bookNumber = 5;

Получим

<p data-page ="42" data-book-number="5">Все не строковые значения будут приводиться к строке.</p>

Удалить дата-атрибут можно с помощью оператора delete. Возьмем предыдущий html

<p data-page ="42" data-book-number="5">Все не строковые значения будут приводиться к строке.</p>

удалим

const element = document.querySelector('p');

delete element.dataset.bookNumber;

Получим

<p data-page ="42">Все не строковые значения будут приводиться к строке.</p>
1 0
Основы Frontend за 14 дней
  • 72 урока в онлайн-тренажере
  • 4 живых вебинара и масскодинг
  • Помощь наставника на весь период обучения

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Похожие вопросы