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, время: 03:10. |