addEventListener для массива, чтобы изменить несколько цветов кнопки? - PullRequest
0 голосов
/ 01 февраля 2019

Мне постоянно говорят, что buttonArray.addEventListener не является функцией, и я не уверен, почему.Все еще новичок в JS, любая помощь приветствуется.

Попытка сделать forEach не помогла.

let button = document.querySelectorAll('.btn');
console.log(button);

let buttonArray = Array.from(button);

buttonArray.addEventListener('mouseover', event => {
    event.target.style.color = 'red';
});

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Используйте это, вы возвращаете массив, и вам нужно добавить событие к каждому элементу

let button = document.querySelectorAll('.btn');
console.log(button);

let buttonArray = Array.from(button);//this is an array here
console.log(buttonArray)
//using foreach to add eventlistener to every element in array
buttonArray.forEach(a=>a.addEventListener('mouseover', event => {
    event.target.style.color = 'red';
}))
<button class="btn">hello</button>
<button class="btn">hello</button>
<button class="btn">hello</button>
<button class="btn">hello</button>
0 голосов
/ 01 февраля 2019

Вам нужно перебрать весь массив, используя for of и addEventListener для них в loop

let button = document.querySelectorAll('.btn');
console.log(button);

let buttonArray = Array.from(button);
for(let button of buttonArray){
    button.addEventListener('mouseover', event => {
        event.target.style.color = 'red';
    });
}
0 голосов
/ 01 февраля 2019

Вам необходимо прикрепить прослушиватель событий к самим кнопкам, а не к массиву кнопок.Попробуйте это

 let button = document.querySelectorAll('.btn');
 console.log(button);

 let buttonArray = Array.from(button);

 buttonArray.forEach(btn => {
   btn.addEventListener('mouseover', event => {
     event.target.style.color = 'red';
   });
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...