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 Microsoft Internet Explorer
61 49 10.1 48 17
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
61 61 49 10.3

Приклади

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

У цьому прикладі ми використовуємо метод 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

Коментарі

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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