addEventListener внутри forEach можно?
Подскажите, можно ли в js устанавливать слушатель addEventListener внутри forEach ?
Если я вот такой код:
for (var i = 0; i < inpPrim.length; i++) {
inpPrim[i].addEventListener('change', () => plankiPrim())
}
перепишу вот так:
inpPrim.forEach(el => el.addEventListener('change', () => plankiPrim()));
Так допускается? Может так не рекомендуется (нагрузки, замедление)? Или лучше для addEventListener делать первый вариант на for ? |
Цитата:
но зачем в данном случае () => plankiPrim(), можно просто plankiPrim? |
рони, Спасибо, буду знать.
А вот как можно сразу? Можете показать код? Я вот так попробовал запустить:
inpPrim.forEach(el => el.addEventListener('change', plankiPrim()));
ошибок нет, но работает не правильно. Срабатывает сразу при загрузке, а не по событию. А потом уже на событие не реагирует. |
MC-XOBAHCK, ответьте на вопросы:
1. Что делают скобочки после имени функции? 2. Что именно ожидает вторым аргументом addEventListener? Найдите противоречие. |
Цитата:
Сейчас попробую без скобочек. |
Aetae, Спасибо за намёк!
inpPrim.forEach(el => el.addEventListener('change', plankiPrim));
Работает!!! : ) |
А можно ещё спросить, вот такое можно ещё сократить?
const inpPrim = document.querySelectorAll('input[name="vvPl"]'); // это остаётся (используется ещё в других местах)
let size = [];
inpPrim.forEach((el, i) => size[i] = +el.value);
Типа вот как то так нельзя? : let size = [].inpPrim.forEach((el, i) => size[i] = +el.value); |
let size = [].map.call(inpPrim, el => +el.value); forEach метод который ничего не возвращает (у него только побочный эффект) |
j0hnik, Круто!
Метод call это новое для меня. Вроде на моём примере он вполне понятен, но я лучше подробненько перечитаю весь урок. |
да все потому что inpPrim это нод лист, а так можно было бы и без кол.
var inpPrim = [...document.querySelectorAll('input')];
let size = inpPrim.map(el => +el.value);
но с кол в данном случает будет быстрей. |
| Часовой пояс GMT +3, время: 02:10. |