Как правильно создать интерактивный компонент на js?
Сейчас веб компоненты позволяет создавать любой из этих фреймвоков
https://angular.io/
https://reactjs.org/
https://vuejs.org/
https://www.polymer-project.org/
Это из самых прохайпленыхю Есть еще нейтивные https://www.webcomponents.org/ но они пока в процессе.
Если обработчик один, то как минимум добавлять class либо data-