Хотя термины "атрибут" (attribute) и "свойство" (property) часто используются как синонимы, в контексте DOM они имеют важные различия.
Определение: Атрибуты — это части HTML-разметки, которые определяются в тегах элементов.
Характеристики:
getAttribute()
, setAttribute()
Пример:
<input id="username" type="text" value="Гость" data-info="temp">
const input = document.getElementById('username');
console.log(input.getAttribute('value')); // "Гость" (строка)
console.log(input.getAttribute('data-info')); // "temp"
Определение: Свойства — это значения, которые хранятся в DOM-объектах JavaScript.
Характеристики:
Пример:
console.log(input.value); // "Гость" (может быть изменено пользователем)
console.log(input.id); // "username"
console.log(input.type); // "text"
Характеристика | CommonJS | ES Modules |
---|---|---|
Синтаксис | require/exports | import/export |
Загрузка | Синхронная | Асинхронная |
Браузерная поддержка | Нет (требует сборки) | Нативная |
Дерево зависимостей | Статическое | Статическое |
this в модуле | module.exports | undefined |
Синхронизация:
input.setAttribute('value', 'Новое');
console.log(input.value); // "Новое" (но не всегда)
Булевы атрибуты:
<button disabled>Кнопка</button>
console.log(button.getAttribute('disabled')); // "" (пустая строка)
console.log(button.disabled); // true
Пользовательские атрибуты (data-*):
dataset
console.log(input.dataset.info); // "temp"
Используйте атрибуты:
Используйте свойства:
<input id="age" type="number" value="30" min="18">
const ageInput = document.getElementById('age');
// Атрибуты
console.log(ageInput.getAttribute('value')); // "30" (строка)
console.log(ageInput.getAttribute('min')); // "18" (строка)
// Свойства
console.log(ageInput.value); // 30 (число, если input type="number")
console.log(ageInput.min); // 18 (число)
ageInput.value = 25; // Изменяет текущее значение, но не атрибут
Атрибуты — это HTML-представление данных, а свойства — их JavaScript-представление в DOM. Понимание различий между ними критически важно для корректной работы с элементами страницы, особенно при динамическом изменении их состояния.