Измените все конкретные термины в href на другие конкретные термины с помощью javascript

#javascript #jquery #html #regex #href

#javascript #jquery #HTML #регулярное выражение #href

Вопрос:

Я хочу изменить часть многих ссылок на веб-странице. Я хочу изменить любую ссылку с «oldTag» на «newTag».

Пример. www.google.com/WillBeDifferent/oldTag для www.google.com/WillBeDifferent/newTag

В принципе, любую ссылку, где отображается oldTag, я хочу заменить на newTag. Я новичок в этом, но я исследовал в течение нескольких дней, и, похоже, ничего из того, что я могу придумать, не работает.

Контекст заключается в том, что у меня есть менеджер тегов Google, который проверяет, присутствует ли файл cookie, и если он есть, то он запускает тег для изменения всех ссылок на newTag.

Не уверен, должен ли я или могу использовать jQuery или Regex…

Вот с чем я играл, просматривая Интернет.

 var anchors = document.querySelectorAll('a[href*="oldTerm"]');
    Array.prototype.forEach.call(anchors, function (element, index) { 
    element.href ="newTerm"; });
  

Он заменил все ссылки на старый термин, но заменил их на http://www.google.com/newTerm.

 $("a[href^='oldTerm']")
.each(function() {
this.href = this.href.replace(/oldTerm/g, 
     "newTerm");
});
  

Не удалось заставить это работать, но нашел это где-то еще здесь.

Не уверен, где искать сейчас … любая помощь была бы отличной.

Ответ №1:

вы очень близки, но вам нужно использовать * вместо ^

 $("a[href*='oldTerm']")
  .each(function() {
    this.href = this.href.replace(/oldTerm/g, "newTerm");
  });
  

Комментарии:

1. Спасибо, это сработало. Единственное, что мне нужно было сделать, это изменить $ на jQuery, поскольку я получал ошибку $ is not a function. Возможно, это как-то связано с тем фактом, что я загружал скрипт из диспетчера тегов Google.