@RuhHost

Сделать каждую ссылку как кнопку?

Доброго времени суток. Была поставлена задача написать сайт на js + Ajax для внутренней работы элементы вызываются через onclick="function('/url/');" все хорошо работает.

Появилась мысль убрать onclick="" и сделать так, чтобы при нажатие на любую ссылку вызвалась функция она определяла атрибут href="#home" и вызывала js функцию. Как это можно реализовать?
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
telnov_magic
@telnov_magic
Между небом и омутом, между серпом и молотом
Если я правильно понял, что вам нужно сделать:

const links = document.querySelectorAll('a');

links.forEach(function (currentLink) {
    const hrefAttribute = currentLink.getAttribute('href');
    
    currentLink.addEventListener('click', () => yourFunction(hrefAttribute));
})


Вроде должно работать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function onLinkClick(event) {
  event.preventDefault(); // выключаем стандартный функционал браузера (переход)
  const {href} = event.target; // извлекли полный адрес из ссылки (даже для относительных ссылок вернет абсолютный адрес)
  const hrefAsInHTML = event.target.getAttribute('href'); // извлекли href таким какой он есть в html
  // любая Ваша логика
}

for(const link of document.getElementsByTagName('a')) {
  link.addEventListener('click', onLinkClick);
}
Ответ написан
Ваш ответ на вопрос

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

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