Могу ли я добавить анимацию ко всем ссылкам на странице?JavaScript: getElementsByTagName()
Здесь код
var words = document.links;
words.onmouseover = function() {
words.classList.toggle("tada");
};
Спасибо заранее.
Могу ли я добавить анимацию ко всем ссылкам на странице?JavaScript: getElementsByTagName()
Здесь код
var words = document.links;
words.onmouseover = function() {
words.classList.toggle("tada");
};
Спасибо заранее.
В getElementsByTagName('a')
и querySelectorAll('a')
функции должны работать, как ожидалось возвращение либо HTMLCollection
или NodeList
соответственно, оба из которых потребуют от вас выполнить итерацию, чтобы на самом деле настроить обработчик событий:
// Get your links
var links = document.getElementsByTagName('a');
// Iterate through them and set up your event handlers
for(var l = 0; l < links.length; l++){
links[l].onmouseover = function() {
this.classList.toggle("tadan");
};
}
Важно также отметить, что getElementsByTagName()
вернется «живой» HTMLCollection
элементов, в то время как querySelectorAll()
возвратит «неживой» NodeList
, которые могут повлиять, как элементы в них используются.
https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName, похоже, указывает, что getElementsByTagName возвращает HTMLCollection. Разница между HTMLCollection и NodeList заключается в том, что HTMLCollection всегда живет? – heapunderflow
Вы правы. По какой-то причине я предполагаю, что я сначала ссылался на неправильную функцию. Но да, 'HTMLCollection' жив, а' NodeList' - нет. –
должен loooopp
var link = document.getElementsByTagName('a');
for(var i=link.length; i--;)
link[i].onmouseover = function() {
this.classList.toggle("tadan");
};
ИЛИ вы должны JQuery помечены, так что вы могли бы просто
$('a').mouseover(function(){
$(this).toggleClass('tadan');
});
Если вы используете jQuery, можете также сделать все это способом jQuery: '$ (this) .toggleClass ('tadan');' –
Вы можете упростить код, если вы используете 'this' вместо' z' внутри события обработчик. Тогда вы можете опустить IIFE. –
хорошие моменты, спасибо. –
getElementsByTagName('a')
вернет массив всех элементов a
. Проведите через массив и toogle класс для каждого элемента a
,
У вас есть источник этого требования? Почему он чувствителен к регистру, если сам HTML не чувствителен к регистру? В моем быстром испытании оба «A» и «a» работают просто отлично. –
Это просто нагло ложно ... –
Согласно [этой ссылке] (http://help.dottoro.com/ljibxacv.php), он не учитывает регистр в HTML. Кроме того, [эта документация] (https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName) гласит: «При вызове HTML-элемента в документе HTML' getElementsByTagName' помещает свой аргумент в перед тем, как продолжить », что также должно избегать любых проблем с чувствительностью к регистру. –
Этот код должен работать. Он должен касаться только первого якоря на странице, но его использование querySelector вместо querySelectorAll или getElementsByTagName. – Quentin
Я не вижу, чтобы вы использовали 'getElementsByTagName' или' document.querySelectorAll' в любом месте! –
Потенциально дубликат http://stackoverflow.com/q/6967297/218196 и http://stackoverflow.com/q/22727403/218196 –