setAttribute() в JavaScript
Добавление и изменение атрибута
Метод setAttribute() добавляет атрибут, если его нет, или заменяет значение существующего атрибута.
<a class="profile-link" href="/profile">Профиль</a>
const profileLink = document.querySelector('.profile-link');
profileLink.setAttribute('href', '/settings');
profileLink.setAttribute('title', 'Открыть настройки');
Ссылка начнёт вести на страницу настроек, а атрибут title будет добавлен. Синтаксис метода: element.setAttribute(‘имя’, ‘значение’).
Значение становится строкой
Второй аргумент setAttribute() преобразуется в строку. Например, productButton.setAttribute(‘data-product-id’, 42) создаст атрибут со значением “42”.
Булевы атрибуты
У булевых атрибутов важно само наличие атрибута. К ним относятся disabled, checked и required.
const saveButton = document.querySelector('.save-button');
saveButton.setAttribute('disabled', '');
Кнопка станет недоступной.
saveButton.setAttribute(‘disabled’, false)тоже отключит кнопку: значение станет строкой“false”, но атрибут всё равно существует. Чтобы включить кнопку, удалите атрибут или задайтеsaveButton.disabled = false.
Атрибут или свойство
setAttribute() изменяет HTML-атрибут. Для текущего состояния полей формы используйте DOM-свойства: input.value, checkbox.checked и button.disabled. Например, после ввода пользователя setAttribute(‘value’, ‘Анна’) не является надёжным способом изменить текущее значение поля.
Для чтения значения атрибута используйте getAttribute(), а для удаления - removeAttribute(). О работе с data-* читайте в уроке «Изменение атрибутов».
Итого
setAttribute() добавляет или изменяет HTML-атрибут, а его значение сохраняется как строка. Для булевых атрибутов важно наличие, а текущее состояние элементов формы меняйте через их свойства.