Вебсправочник
Ваш первый сайт

Урок: проверить типы значений в dataset

Data-атрибуты удобно связывают разметку с небольшими настройками интерфейса. В этом уроке вы проверите, почему число и логический признак из dataset сначала оказываются строками.

Назначение

Data-атрибуты удобно связывают разметку с небольшими настройками интерфейса. В этом уроке вы проверите, почему число и логический признак из dataset сначала оказываются строками.

Как это работает

Пример создаёт элемент в памяти, не добавляя его на страницу. Имена с дефисами переходят в camelCase. Преобразование числа и проверка значения выполняются явно, прежде чем оно станет частью вычисления.

Пример

const card = document.createElement("div");
card.setAttribute("data-lesson-count", "3");
card.setAttribute("data-enabled", "false");
console.log(card.dataset.lessonCount, typeof card.dataset.lessonCount);
const count = Number(card.dataset.lessonCount);
console.log(Number.isInteger(count) && count >= 0);
console.log(Boolean(card.dataset.enabled));
console.log(card.dataset.enabled === "true");

Что должно получиться

Количество сначала имеет тип string, затем явно преобразуется в число. Boolean от непустой строки false возвращает true, а сравнение с разрешённым текстом true даёт ожидаемый отдельный результат.

Граница применения и частая ошибка

Dataset не является защищённым хранилищем: пользователь и скрипты могут изменить атрибуты. Number от пустой строки даёт ноль, поэтому обязательность и допустимый формат нужно проверять отдельно. Не помещайте в HTML секретные настройки.

Самостоятельная проверка

Проверьте отсутствующий атрибут, пустую строку и значение three. Запишите результаты преобразования и сформулируйте правила отказа. Затем измените dataset.lessonCount и посмотрите, как обновляется исходный data-атрибут.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.