Можно реализовать циклом, но не рекомендую так как если DOM дерево обновится (например, вы добавите новый элемент) вам придется искать его и ручками добавлять ему слушатель. А так как вы добавляли слушатели циклом то соответственно функция обработчик вероятнее всего анонимная. По этому придется еще и функцию выносить в необходимую область видимости.
Лучше вешать слушатель на родителя и проверять таргет.
Например, у вас есть много элементов с классом block, значит вешать слушатель стоит на их родителя, предположим что он имеет класс wrapper
<div class="wrapper">
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
document.querySelectorAll('.wrapper').addEventListener('mousemove', e => {
if (!e.target.classList.contains('block')) return; // Если элемент который вызвал это событие не имеет класса block, то отправляем return, тем самым код ниже выполнятся не будет
// тут писать код который будет выполнятся если элемент который вызвал это событие имеет класса block
})