Javascript присоединяет событие onclick ко всем ссылкам

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

Как я могу сделать это без jQuery?

Как мне перемещаться по каждой ссылке (это может быть элемент DOM) и вызывать функцию на них?

Ответ 1

getElementsByTagName поддерживается всеми современными браузерами и полностью возвращается к IE 6

var elements = document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
    elements[i].onclick = function () {
        // stuff
    }
}

Ответ 2

Странно, что никто не предлагал альтернативное решение, которое использует пузырьки событий

function callback(e) {
    var e = window.e || e;

    if (e.target.tagName !== 'A')
        return;

    // Do something
}

if (document.addEventListener)
    document.addEventListener('click', callback, false);
else
    document.attachEvent('onclick', callback);

Преимуществом этого решения является то, что когда вы динамически добавляете еще один якорь, вам не нужно специально привязывать к нему событие, поэтому все ссылки всегда будут запускать его, даже если они были добавлены после выполнения этих строк. Это противоречит всем остальным решениям, опубликованным до настоящего времени. Это решение также более оптимально, если на вашей странице имеется большое количество ссылок.

Ответ 3

function linkClickHandler(a) {
  console.log(a.host);
}

var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) links[i].onclick = function() {
    linkClickHandler(links[i]);
}

Ответ 4

Что-то вроде этого должно быть полезно для вас:

var elements = document.getElementsByTagName("a"),
    i,
    len,
    el;

for (i = 0, len = elements.length; i < len; i++) {
    el = elements[i];

    // Do what you need on the element 'el'
}

Ответ 5

лучший способ:

const item = document.querySelectorAll(".nav__item");

item.forEach(link => {
  link.addEventListener("click", function () {
    link.classList.add("nav__item--active");
  });
});

Ответ 6

Попробуйте использовать getElementsByTagName('a')