Во-первых, если присваивать событие таким образом, то необходимо пройтись по всем элементам, в данном же случае событие присваивается только первому элементу с классом "menu"
Во-вторых, как и написано в комментарии у
Александр , элемент уже должен существовать на странице в момент, когда ты присваиваешь ему событие. Например, это можно сделать, обернув твой код в такую конструкцию
document.addEventListener( 'DOMContentLoaded', function( event ) {
// Do something
});