@merelyJunior

Как изменить цвет ссылки при наличии в ней определённого текста?

Нужно изменять цвет ссылки в зависимости от её текста.
К примеру, нашли в тексте ссылки Ru - желтый, En- красный и т.д.

<a class="some-link">En<a/>
<a class="some-link">En<a/>
<a class="some-link">Ru<a/>
<a class="some-link">De<a/>
<a class="some-link">De<a/>
<a class="some-link">IT<a/>

var subject = $(".some-link").text();
var russian = /Ru/g;
var ruReg = subject.match(regex);
if ( ruReg ) {
   $(".some-link").text().css("color", "yellow");
}
  • Вопрос задан
  • 122 просмотра
Решения вопроса 2
@goshaLoonny
$(".some-link").each((i, el) => {
  if ($(el).text().match(/Ru/g)) {
    $(el).css("color", "yellow");
  }
})
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Кого будем перекрашивать, и в какие цвета:

const className = 'some-link';
const colors = {
  En:   'red',
  Ru: 'green',
  De:  'blue',
};

Перекрашиваем текст в случае точного совпадения:

for (const n of document.getElementsByClassName(className)) {
  n.style.color = colors[n.textContent];
}

Или, смотрим наличие подстроки, регистр не важен:

document.querySelectorAll(`.${className}`).forEach(function(n) {
  n.style.color = this.find(m => m[0].test(n.innerText))?.[1];
}, Object.entries(colors).map(n => [ RegExp(n[0], 'i'), n[1] ]));

Можно и без регулярных выражений:

- RegExp(n[0], 'i')
+ n[0].toLowerCase()

- m[0].test(n.innerText)
+ n.innerText.toLowerCase().includes(m[0])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы