Я хочу привязать функцию к каждой ссылке на сайте, чтобы изменить параметр.
Как я могу сделать это без jQuery?
Как мне перемещаться по каждой ссылке (это может быть элемент DOM) и вызывать функцию на них?
Я хочу привязать функцию к каждой ссылке на сайте, чтобы изменить параметр.
Как я могу сделать это без jQuery?
Как мне перемещаться по каждой ссылке (это может быть элемент DOM) и вызывать функцию на них?
getElementsByTagName поддерживается всеми современными браузерами и полностью возвращается к IE 6
var elements = document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
elements[i].onclick = function () {
// stuff
}
}
Странно, что никто не предлагал альтернативное решение, которое использует пузырьки событий
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);
Преимуществом этого решения является то, что когда вы динамически добавляете еще один якорь, вам не нужно специально привязывать к нему событие, поэтому все ссылки всегда будут запускать его, даже если они были добавлены после выполнения этих строк. Это противоречит всем остальным решениям, опубликованным до настоящего времени. Это решение также более оптимально, если на вашей странице имеется большое количество ссылок.
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]);
}
Что-то вроде этого должно быть полезно для вас:
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'
}
лучший способ:
const item = document.querySelectorAll(".nav__item");
item.forEach(link => {
link.addEventListener("click", function () {
link.classList.add("nav__item--active");
});
});
Попробуйте использовать getElementsByTagName('a')