Как с помощью js в атрибут href указать относительный путь

Рейтинг: -1Ответов: 1Опубликовано: 22.07.2023
const galleryCartA = document.querySelectorAll('.gallery_cart-a');

galleryCartA.forEach(function (el) {
    let ahref = el.querySelector('img').getAttribute("src");
    el.querySelector('img').setAttribute("alt", el.querySelector('img').getAttribute("src"));
    el.setAttribute("href", el.querySelector('img').getAttribute("alt"));
    alert(el.href);
})

Есть библиотека для работы которой мне необходимо перенести значение из дочернего элемента img значение атрибута src в href родительской ссылки с классом gallery_cart-a и этот путь обязательно должен быть относительным, но когда я присваиваю относительный путь атрибуту href родительского элемента путь становиться абсолютным. Помогите, пожалуйста, сделать путь в href относительным

Ответы

▲ 0

При выполнении вашего скрипта ссылке присваивается относительный путь, но когда вы вызываете alert с el.href, то показывается полный путь. Если вызвать alert с el.getAttribute("href"), то будет показан относительный путь. Пример:

const galleryCartA = document.querySelector('.gallery_cart-a'); //Так как в примере 1 ссылка, то forEach убран и ваш код выполняется с этой единственной ссылкой

let ahref = galleryCartA.querySelector('img').getAttribute("src");

galleryCartA.querySelector('img').setAttribute("alt", galleryCartA.querySelector('img').getAttribute("src"));

galleryCartA.setAttribute("href", galleryCartA.querySelector('img').getAttribute("alt"));

//Обработчики кликов по кнопкам
document.querySelector('.withoutGetAttr').addEventListener('click', function() {
  alert(galleryCartA.href)
})
document.querySelector('.withGetAttr').addEventListener('click', function() {
  alert(galleryCartA.getAttribute("href"))
})
<p>У тега img src="../1.png"</p>
<a class="gallery_cart-a" href="#"><img src="../1.png"></a>

<button class="withoutGetAttr">Вызвать alert(element.href)</button>
<button class="withGetAttr">Вызвать alert(element.getAttribute("href")</button>