Набросал на скорую руку, просто потому что было интересно, хотя, по хорошему, ответом на Ваш вопрос должны быть ссылки на изучение js и на habr.freelance, так как Вы не прикладываете своих попыток к вопросу, а значит это задание, а не вопрос.
В демке ниже используются следующие техники:
Вёрстка:
- flexbox
- HTML-мнемоники (для крестика на кнопке)
JS:
- Обработка событий, в том числе полей формы (change)
- Поиск и создание элементов
- Делегирование событий (в функции
onSelectorClick
определяется что если клик произошёл на кнопку с крестиком, то удалить родительский элемент кнопки. В итоге получаем всего один слушатель на все элементы selector сколько бы их не было.)
- Замыкания. Позволили нам найти все нужные html элементы один раз(поиск элементов в DOM одна из самых дорогих операций), а потом просто обращаться к переменным, в которые мы их сохранили из функций.