JS метод DOMTokenList.replace()


Загальний опис

Метод replace() об'єкта DOMTokenList використовується для заміщення одного існуючого токена іншим у списку класів елемента. Основна суть цього методу полягає в тому, щоб забезпечити зручний спосіб заміни одного класу на інший без необхідності вручну видаляти старий клас і додавати новий. Це особливо корисно при динамічних змінах класів елементів, наприклад, при зміні стану інтерфейсу користувача, створенні анімацій або реакції на дії користувача.

Метод replace() приймає два аргументи: токен, який потрібно замінити, і новий токен, який має зайняти його місце. Якщо перший токен присутній у списку класів, він буде видалений і замінений другим токеном. Якщо першого токена немає у списку, метод не робить нічого і не викликає помилок. Це забезпечує безпечне використання методу без необхідності перевірки наявності класу перед заміною.

Розглянемо базовий приклад використання методу replace(). Припустимо, у нас є HTML-елемент з кількома класами:

<div id="myElement" class="class1 class2"></div>

Ми хочемо замінити клас class1 на class3. Використовуючи метод replace(), це можна зробити наступним чином:

const element = document.getElementById('myElement');
element.classList.replace('class1', 'class3');

Після виконання цього коду елемент матиме класи class3 і class2 замість class1 і class2.

У випадку, коли токен для заміни відсутній, метод не викликає помилок. Наприклад:

const element = document.getElementById('myElement');
element.classList.replace('nonexistentClass', 'newClass');

У цьому прикладі, оскільки nonexistentClass відсутній у списку класів, жодних змін не відбудеться.

Метод replace() також можна використовувати для динамічних змін стилів у відповідь на події. Наприклад, можна змінити клас елемента при натисканні кнопки:

const button = document.getElementById('toggleButton');
button.addEventListener('click', () => {
    const element = document.getElementById('myElement');
    element.classList.replace('inactive', 'active');
});

У цьому прикладі при кожному натисканні кнопки клас inactive буде замінений на active, що дозволяє динамічно змінювати стиль елемента.

Ще один корисний випадок використання методу replace() – це робота з анімаціями та переходами. Наприклад, можна змінювати класи, щоб запускати анімації при певних умовах:

const element = document.getElementById('myElement');

function startAnimation() {
    element.classList.replace('start', 'animate');
}

element.addEventListener('animationend', () => {
    element.classList.replace('animate', 'end');
});

startAnimation();

У цьому прикладі спочатку клас start замінюється на animate, що запускає анімацію. Після завершення анімації клас animate замінюється на end, що може сигналізувати про завершення анімації та виконати відповідні дії.

Завдяки своїй простоті і зручності метод replace() є потужним інструментом для управління класами елементів у JavaScript. Він дозволяє легко замінювати класи, забезпечуючи чистий і зрозумілий код, що особливо важливо при створенні динамічних і інтерактивних веб-інтерфейсів. Від простих операцій до складних маніпуляцій з класами, метод replace() надає ефективні рішення для різних завдань веб-розробки.

автор: Bond

Порада

Переконайтеся, що токен, який ви замінюєте, існує. Метод replace() не викличе помилку, якщо токен відсутній, але заміна не відбудеться. Це може призвести до неочікуваних результатів у вашому коді, тому перед використанням методу можна перевірити наявність токена за допомогою методу contains(). Наприклад:

const element = document.getElementById('myElement');
if (element.classList.contains('oldClass')) {
    element.classList.replace('oldClass', 'newClass');
}
автор: Bond
Порада

Використовуйте метод replace() для динамічних змін класів, щоб забезпечити плавні переходи та анімації. Це дозволить змінювати стан елементів без необхідності вручну видаляти та додавати класи, що робить код більш чистим і зрозумілим. Наприклад, при зміні стану кнопки:

const button = document.getElementById('toggleButton');
button.addEventListener('click', () => {
    const element = document.getElementById('myElement');
    element.classList.replace('inactive', 'active');
});
автор: Bond
Порада

Застосовуйте метод replace() для підтримки єдиного стану елемента. Коли ви використовуєте цей метод, ви гарантуєте, що старий клас буде замінений новим, зберігаючи послідовність станів елемента. Це особливо корисно для елементів, які мають взаємовиключні стани. Наприклад:

const element = document.getElementById('statusIndicator');
element.classList.replace('error', 'success');
автор: Bond
Порада

Комбінуйте метод replace() з іншими методами DOMTokenList, щоб досягти складніших маніпуляцій з класами. Наприклад, можна спочатку перевірити наявність класу, потім замінити його, а після цього додати новий клас залежно від певної умови:

const element = document.getElementById('myElement');
if (element.classList.contains('oldClass')) {
    element.classList.replace('oldClass', 'newClass');
    element.classList.add('additionalClass');
}
автор: Bond

Синтаксис

replace(oldToken, newToken)

Параметри

oldToken

Рядок, що представляє клас, який потрібно замінити.

автор: Bond

newToken

Рядок, що представляє новий клас, на який буде замінено oldToken.

автор: Bond

Повернення

boolean

Повертає логічне значення, яке дорівнює true, якщо oldToken був успішно замінений, або false, якщо ні.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
61 49 10.1 48 17
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
61 61 49 10.3
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використовуємо метод replace() для заміни одного класу елемента на інший. Це може бути корисно, коли потрібно змінити стиль елемента на основі певних подій або дій користувача.

HTML

<div id="myElement">Демонстраційний елемент</div>

JS

const element = document.getElementById('myElement');

// Елемент спочатку має клас 'original'
element.classList.add('original');

// Замінюємо клас 'original' на 'updated'
element.classList.replace('original', 'updated');
автор: Bond

Цей приклад дозволяє користувачу вводити текст і замінювати в ньому певні слова або фрази за допомогою методу replace(). Користувач вводить вихідний текст у текстове поле, вказує слово для пошуку і слово для заміни, а потім натискає кнопку "Замінити". Результат заміни відображається у нижньому полі, що демонструє, як цей метод можна використовувати для роботи з текстом у реальних умовах.

автор: Bond

У цьому складнішому прикладі ми використовуємо метод replace() для заміни кількох класів елемента на основі введеного користувачем тексту. Це може бути корисно, коли потрібно надати користувачеві можливість керувати класами елемента через інтерфейс.

<input type="text" id="classInput" placeholder="Введіть класи для заміни">
<button id="replaceClassesBtn">Замінити класи</button>
<div id="myElement" class="box highlight bordered"></div>

<script>
const element = document.getElementById('myElement');
const classInput = document.getElementById('classInput');
const replaceClassesBtn = document.getElementById('replaceClassesBtn');

replaceClassesBtn.addEventListener('click', () => {
  const classesToReplace = classInput.value.split(' ');
  const newClasses = classInput.value.split(' ');

  classesToReplace.forEach((oldClass, index) => {
    element.classList.replace(oldClass, newClasses[index]);
  });

  classInput.value = '';
});
</script>
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід