Задать вопрос
PavelScron
@PavelScron

JS — сменить цвет выбранному h1 элементу?

Без jquery

В общем если именно одному элементу(т.е. как бы первому) меняю цвет, через querySelector, то все работает

window.onload = function(){
    var lol = document.querySelector('h1');

    lol.onmousemove = function(){
        this.style.color = 'yellow';
    };
    lol.onmouseout = function(){
        this.style.color = 'white';
    };
};


а если хочу чтобы это действовало на все h1, но только к тому элементу на который наведена мышка, то this не работает почему-то(в коде ниже)

window.onload = function(){
    var lol = document.querySelectorAll('h1');

    lol.onmousemove = function(){
        this.style.color = 'yellow';
    };
    lol.onmouseout = function(){
        this.style.color = 'white';
    };
};


https://codepen.io/pavelscron/pen/BxYqbp вот код с querySelectorAll(
  • Вопрос задан
  • 558 просмотров
Подписаться 2 Простой 2 комментария
Решения вопроса 4
@Jumandjilos
пройдись циклом по переменной lol, в которой все h1
for (let elem of lol) {
elem.onmousemove = function(){
this.style.color = 'yellow';
};
elem.onmouseout = function(){
this.style.color = 'white';
};
}
Ответ написан
Комментировать
string15
@string15
Учусь верстать руками
Еще вариант применить делегирование, так производительнее.
Делегирование событий
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Ошибка в том, что querySelector('h1') возвращает ссылку на первый попавшийся h1.
А вот querySelectorAll('h1') возвращает уже список (NodeList), и у списка нет событий onmousemove и onmouseout, это вообще не DOM-элемент.

Самый правильный вариант, использовать делегирование как советовал string15 , и да, лучше не использовать h1 больше одного раза, используйте h2, например, или что-то другое.
Ответ написан
@Za0r
pop()
window.onload = function(){
  
    const lol = document.querySelectorAll('h1');
  
     lol.forEach( lolItem=> {
    lolItem.onmousemove = function() {
        this.style.color = 'yellow';
    };
       
    lolItem.onmouseout = function() {
        this.style.color = 'white';
    };
       
}  );

};

юзать babel
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
h1 на странице может быть только одна штука.

Пример - https://codepen.io/AXP/pen/wjyQKq?editors=1010
window.onload = () => {
  const h2 = document.querySelectorAll('h2');
  
  [...h2].map(item => {
    item.addEventListener('mousemove', e => {
      e.target.style.color = 'yellow';
    });
    
    item.addEventListener('mouseout', e => {
      e.target.style.color = 'red';
    });
  });
}
Ответ написан
Ваш ответ на вопрос

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

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