В общем-то задача несложная, но может выйти объемной. Насколько я понял, вам нужно сделать инкапсулированный компонент с собственной логикой, который можно создавать сколь угодно раз на странице, при этом каждый работает независимо от других и у вас есть доступ к данным каждого. В качестве решения могу предложить следующий подход: Создаете класс калькулятор в js, добавляете в него нужные методы которые совершают операции. Также обязательно добавляете метод render, который будет вставлять html-код калькулятора на страницу в нужное вам место, при этом у корневого DOM-узла, внутри которого находится содержимое калькулятора, будет уникальный идентификатор (как его создавать – на ваш выбор, я бы пользовался
guid). После создания просто добавляете id калькулятора в массив всех id калькуляторов и потом при необходимости можете либо обратиться к нужному, либо пройтись по всем и собрать какие-то данные.