В HTML используются для хранения пользовательских данных в элементах страницы. Они предоставляют способ добавления информации к элементам HTML, не вмешиваясь в стандартные атрибуты и структуру HTML. Эти атрибуты позволяют разработчикам ассоциировать произвольные данные с элементами и использовать их в JavaScript для создания более динамичных и интерактивных веб-приложений.
🚩Атрибуты
🟠Хранение дополнительных данных
Позволяют хранить пользовательские данные непосредственно в HTML-элементах. Это особенно полезно, когда необходимо передавать данные между HTML и JavaScript.
<div id="user" data-user-id="123" data-user-role="admin">...</div>
🟠Создание более гибких и интерактивных приложений
Можно легко передавать и использовать данные для динамического изменения содержимого страницы.
<button data-action="save" data-target="#form">Save</button>
🟠Разделение данных и представления
Помогают разделять данные и логику от представления, сохраняя HTML-код чистым и структурированным.
🟠Работа с JavaScript
JavaScript может легко извлекать и использовать данные из атрибутов
data-, что упрощает манипулирование элементами страницы.const user = document.getElementById('user');
const userId = user.getAttribute('data-user-id');
const userRole = user.getAttribute('data-user-role');
console.log(`User ID: ${userId}, Role: ${userRole}`); 🚩Примеры использования
🟠Хранение информации о продукте
<div class="product" data-product-id="101" data-product-price="29.99">
<h2>Product Name</h2>
<p>Product Description</p>
</div>
const product = document.querySelector('.product');
const productId = product.getAttribute('data-product-id');
const productPrice = product.getAttribute('data-product-price');
console.log(`Product ID: ${productId}, Price: ${productPrice}`);🟠Управление действиями кнопки
<button data-action="submit" data-target="#form">Submit</button>
const button = document.querySelector('button');
button.addEventListener('click', function() {
const action = this.getAttribute('data-action');
const target = this.getAttribute('data-target');
console.log(`Action: ${action}, Target: ${target}`);
});🟠Хранение состояния элемента
<div id="toggle" data-state="collapsed">Click to Expand</div>
const toggle = document.getElementById('toggle');
toggle.addEventListener('click', function() {
const state = this.getAttribute('data-state');
if (state === 'collapsed') {
this.setAttribute('data-state', 'expanded');
this.textContent = 'Click to Collapse';
} else {
this.setAttribute('data-state', 'collapsed');
this.textContent = 'Click to Expand';
}
});🚩Плюсы
➕Простота и гибкость
Легко добавлять и изменять данные без изменения HTML-структуры.
➕Совместимость с существующими инструментами
Атрибуты
data- не влияют на стандартные функции браузеров и инструментов разработки.➕Поддержка валидации HTML
HTML5 атрибуты
data- валидны и не нарушают спецификацию.Ставь 👍 и забирай 📚 Базу знаний