Строй калькулятор онлайн: Калькулятор ленточного фундамента

Содержание

Калькулятор онлайн арматуры на фундамент

Калькулятор расчета ленточного фундамента

С помощью данного онлайн калькулятора вы можете рассчитать количество бетона, арматуры, досок опалубки необходимых для обустройства ленточного железобетонного фундамента. Также, калькулятор произведет комплексный расчёт стоимости материалов. Перед выбором типа фундамента, обязательно проконсультируйтесь со специалистами, подходит ли данный тип для ваших условий. Инструкция по работе с калькулятором.

При работе особое внимание обращайте на единицы измерения вносимых данных!

Результаты расчета

Распечатать Послать на email

Если калькулятор оказался для Вас полезным, пожалуйста нажмите на одну или несколько социальных кнопочек. Это очень поможет дальнейшему развитию нашего сайта. Огромное спасибо.

Инструкция по работе с калькулятором

Данный онлайн-калькулятор поможет вам рассчитать:

  • площадь основания фундамента (например, для определения количества гидроизоляции, чтобы накрыть готовый фундамент)
  • объем бетона, необходимого для заливки всего фундамента с заданными параметрами. Так как объем заказанного бетона может незначительно отличаться от фактического, а так же вследствие уплотнения при заливке, заказывать необходимо с 10% запасом
  • количество арматуры, автоматический расчет ее веса, исходя из ее длины и диаметра
  • площадь опалубки и количество пиломатериала в кубометрах и в досках
  • необходимое количество материалов для приготовления бетона — цемент, песок, щебень
  • а также ориентировочную стоимость всех стройматериалов

Шаг 1: Первое — выберите тип фундамента исходя их вашего проекта. Затем задайте длину, ширину, толщину, а также высоту фундаментной ленты. Правильно сориентироваться вам помогут приложенные рисунки-схемы.

Шаг 2: Далее, заполните поля для расчета арматуры и опалубки. При расчете арматуры необходимо указать параметры будущего арматурного каркаса. Для опалубки укажите размеры заготовленных досок.

Шаг 3: При расчете бетона имейте ввиду, что количество цемента, требуемое для изготовления одного кубического метра бетона различное в каждом конкретном случае. Это зависит от марки цемента, желаемой марки получаемого бетона, размеров и пропорций наполнителей. Значения по умолчанию для пропорций и количества цемента, песка и щебня даны справочно, так, как обычно рекомендуют производители цемента. Вы можете изменить эти значения в соответствии с вашими требованиями.

Шаг 4: При расчете стоимости стройматериалов обратите внимание, что стоимость песка и щебня в калькуляторе указывается за 1 тонну. В прайсах же поставщиков цена чаще всего объявляется за кубический метр. Так что пересчитывать цену за тонну песка и щебня вам придется самостоятельно или уточнять у продавцов. В любом случае, расчет все же поможет вам узнать ориентировочные расходы на строительные материалы для заливки фундамента.

При планировании, не забудьте еще про проволоку для вязки арматуры, гвозди или саморезы для опалубки, доставку строительных материалов, расходы на земляные и строительные работы.

Ленточный фундамент своими руками

Фундаментом называется подземная часть здания или сооружения, принимающая нагрузки и передающая их на грунт. Самым популярным видом фундамента при строительстве домов считается ленточный фундамент. Такое распространенное применение ленточного фундамента объясняется его универсальностью и доступной стоимостью. Перед тем как приступить к строительству, нужно сделать выбор между мелкозаглубленным и заглубленным ленточным фундаментом.

Мелкозаглубленный ленточный фундамент

Мелкозаглубленный фундамент экономит, как бюджет, так и время. И трудозатраты будут значительно меньше, так как для его сооружения не потребуется глубокий котлован. Используется такой фундамент для облегченных конструкций небольшой площади:

  • домов из дерева
  • газобетонных сооружений или зданий, построенных из газобетонных и пенобетонных блоков, высота которых не превышает 2 этажа
  • монолитных зданий с несъёмной опалубкой
  • небольших сооружений, построенных из камня

Глубина мелкозаглубленного фундамента достигает полметра.

Заглубленный ленточный фундамент

Такой фундамент применяется для постройки сооружений с тяжёлыми стенами, бетонными перекрытиями, подвалом или подземным гаражом. Длину заглубления фундамента нужно рассчитать заранее. Сначала необходимо определить уровень промерзания грунта, затем вычесть 30 см и уже на этой глубине закладывать фундамент.

Подготовка к работе

Чтобы самостоятельно возвести ленточный фундамент, вначале обязательно нужно провести точное планирование. Необходимость тщательных расчетов объясняется тем, что фундамент является одним из важнейших конструктивных элементом любого здания или дома. Допущенные в начале строительства ошибки могут спровоцировать негативные последствия в ходе эксплуатации дома.

Разметка

Разметку проводят, нанося на земле как внешние, так и внутренние границы будущего фундамента. Для этого лучше всего использовать колышки или прутья арматуры и веревки.Но эффективней будет воспользоваться специальными приборами, такими как лазерные нивелиры. Помните, что большие погрешности в разметке заметно отразятся на внешнем виде готовой постройки.

Для достижения идеальных результатов нужно:

  • определить ось возводимого сооружения
  • при помощи отвеса наметить угол, от него под углом 90 градусов натянуть веревку к ещё двум углам сооружения
  • с помощью угольника определить ещё один угол
  • проверить углы, ориентируясь на диагонали. Если проверка дала положительные результаты – натянуть между ними веревку
  • взяться за внутреннюю разметку, отступая от внешней разметки на расстояние толщины будущего фундамента

Когда закончите с разметкой, изучите перепады поверхности на месте постройки и выберите самую низкую точку для отсчёта глубины траншеи и исключения разницы в высоте фундамента. Если здание планируется небольшим, то глубина котлована может составлять 40 см.

Устройство подушки и гидроизоляция ленточного фундамента

На готовую траншею следует уложить песчаную подушку с добавлением гравия. Рекомендованная высота каждого слоя составляет 120-150 мм. После этого каждый слой необходимо пролить водой и утрамбовать для увеличения плотности. Чтобы изолировать готовую подушку, нужно на неё выложить прочную гидроизоляционную пленку.

Установка опалубки ленточного фундамента

Опалубка обычно изготавливается из струганных досок толщиной приблизительно 40-50 мм. Можно использовать для этой цели шифер.

При возведении опалубки контролируйте вертикальность. Рекомендованная высота каркаса над землёй равна 30 см. Это нужно, чтоб соорудить небольшой цоколь. В опалубке укладываются асбестобетонные трубы для ввода в здание канализации и водопровода.

Проложите между бетоном и опалубкой полиэтиленовую пленку, это защитит опалубку от загрязнения.

Укладка арматуры

Следующий этап – установка арматуры. Арматурные стержни сечением 10-12 мм связываются специальной вязальной проволокой так, чтобы стороны квадратных ячеек равнялись 30-40 см. Арматура может быть как стальная, так и стеклопластиковая.

Не рекомендуется использовать для крепления арматуры сварочный аппарат, чтобы избежать коррозии в местах сварки. Размещая арматуру в траншее, следите за отступами от краев. Рекомендуемый отступ – 50 мм.

Вентиляция и коммуникации

Далее необходимо обеспечить вентиляцию фундамента и предусмотреть технологические отверстия для ввода коммуникаций в здание. Возьмите часть асбоцементной или пластиковой трубы и привяжите его к арматуре.

Заливка ленточного фундамента бетоном

Заполняйте опалубку бетоном постепенно. Толщина слоев составляет 15-20 см, во избежание пустот и увеличения общей прочности трамбуйте слои специальным инструментом – деревянной трамбовкой, либо глубинным вибратором.

Можно заказать готовую бетонную смесь с завода или сделать ее самому с помощью бетономешалки. Рекомендуемая пропорция цемента, песка и щебня такова: 1:3:5.

Слои не должны отличаться составом. В холодную погоду следует применять подогреватель бетона и морозостойкие добавки, в жаркую — поливать бетон водой.

Окончание работ

По окончанию заливки бетона, его следует закрыть пленкой для предотвращения высушивания и оставить набирать прочность минимум на 2 недели.

Как выполнить расчет количества арматуры для ленточного фундамента при помощи онлайн-калькулятора + вычисления параметров опалубки и сечения

Ленточный фундамент занимает основное место среди всех опорных конструкций для зданий и сооружений.

Он способен эффективно работать на самых сложных грунтах, имеет оптимальный набор эксплуатационных качеств.

Монолитные конструкции ленты не теряют своих рабочих качеств до 150 лет, что превышает срок службы стен дома.

Такие высокие возможности возникли из-за высокой жесткости и прочности ленты, которые обеспечивает совместная работа бетона и металлической арматуры.

Каждый из них выполняет свою функцию, в сумме обеспечивая надежность и высокую несущую способность ленточного основания.

Как работает арматура в ленточном фундаменте

Арматурный каркас необходим для компенсации осевых противонаправленных (растягивающих) нагрузок, возникающих в ленте при появлении деформирующих воздействий — изгибающих или скручивающих усилий.

Особенность бетона состоит в способности принимать гигантские давления без каких-либо последствий.

При этом, он практически беззащитен перед разнонаправленными усилиями, быстро покрывается трещинами и разрушается.

Поэтому для ленты крайне опасны любые усилия, приложенные в одной точке — например, боковые или вертикальные нагрузки пучения. Арматурные стержни предназначены для приема этих усилий на себя.

Существует горизонтальная (рабочая) и вертикальная арматура. Основные нагрузки принимают горизонтальные стержни.

Они имеют больший диаметр и рифленую поверхность, обладающую хорошим сцеплением с бетоном.

Вертикальные стержни выполняют две функции:

  • Фиксация рабочей арматуры в необходимом положении до момента заливки бетоном.
  • Частичная компенсация скручивающих усилий.

Первая задача основная, а вторая — дополнительная, поскольку наличие таких специфических нагрузок наблюдается довольно редко.

В большинстве случаев вертикальная (гладкая) арматура служит лишь опорной конструкцией, удерживающей рабочие стержни в необходимом положении до момента заливки.

Они довольно толстые, так как заливка — процесс с достаточно интенсивными воздействиями на каркас, сосредоточенными в одной точке (место падения тяжелого материала в опалубку), а также распределенными по всей длине (штыкование, обработка виброплитой).

Онлайн калькулятор

Как рассчитать ленточный фундамент дома? В этой вам может специально разработанный сервис — строительный калькулятор ленточного фундамента.

Инструкция по работе с калькулятором

В сети интернет имеется немало онлайн-калькуляторов, помогающих рассчитать параметры ленточных фундаментов по всем важным позициям. Расчет арматуры с их помощью занимает буквально пару минут.

Например, на сайте необходимо лишь внести собственные данные в соответствующие окошечки программы и нажать кнопку «рассчитать».

Дается схема армирования, в которой надо указать основные параметры — количество рабочих стержней в одном ряду, общее число рядов, расстояние между вертикальными прутками и т.п. В отдельном окне указывается стоимость арматуры за единицу.

В результате программа выдает количество арматуры и общую цену. Расчет производится просто и быстро, кроме арматуры ресурс выдает параметры всех элементов ленты — опалубки, количества бетона и т. д.

Недостатком данного калькулятора можно считать необходимость заранее знать схему армирования, диаметр стержней и рыночную стоимость материала.

Если требуется определить количество и сечение стержней, ресурс бесполезен. Он дает только количественную информацию, не касаясь качественных моментов, что иногда не совсем то,что нужно.

Порядок расчета

Рассмотрим, как рассчитать арматурный каркас ленты самостоятельно.

Прежде всего, необходимо определить количество рабочих стержней в одном ряду. Для этого понадобится использовать требование СП 52-101-2003, ограничивающее максимальное расстояние между соседними прутками в 40 см.

Учитывая, что глубина погружения рабочей арматуры не должна превышать 2-5 см, получаем:

  • Для лент толщиной менее 50 см — 2 рабочих стержня.
  • Для лент шире 50 см — 3 стержня.

В случаях, когда можно использовать и 2, и 3 стержня в одном ряду, обычно стараются подстраховаться и принять большее значение, так как фундамент — ответственный и важный участок постройки.

Вторым этапом является определение диаметра рабочих стержней. Для этого понадобится рассчитать площадь сечения рабочей части ленты, умножив ширину на высоту.

Общая площадь сечения арматуры составляет 0,1% от сечения (это минимально возможное значение, его можно увеличить, но нельзя уменьшать).

Получив это значение, надо разделить его на число рабочих стержней. По таблице диаметров арматурных прутков находится наиболее удачный вариант, который и принимается в работу.

Диаметр вертикальной арматуры выбирается исходя из высоты ленты:

  • При высоте до 60 см — 6 мм.
  • От 60 до 80 см — 8 мм.

Диаметр поперечных стержней обычно принимается равным 6 мм.

Для подсчета количества рабочих стержней надо умножить их число в решетке на общую длину ленты, после чего полученное значение делится на длину рабочего прутка (обычно 6 м, но это значение лучше узнать у продавцов точно).

Вертикальную арматуру рассчитывают путем умножения количества хомутов на длину единицы.

Количество получают делением общей длины ленты на шаг хомутов (обычно 50-70 см).

Пример вычисления необходимых параметров

Рассмотрим расчет арматуры для ленточного фундамента на примере.

Допустим, что высота ленты составляет 100 см, а ширина — 40 см (распространенный вариант мелкозаглубленного фундамента).

Тогда площадь сечения составит:

40 • 100 = 4000 см2.

Определяем общую площадь сечения арматуры (минимальную):

4000 : 1000 = 4 см2.

Поскольку ширина ленты составляет 40 см, то в одной решетке нужно разместить 2 стержня, а общее количество составляет 4 шт.

Тогда минимальная площадь сечения одного прутка составит 1 см2. По таблицам СНиП (или из иных источников) находим наиболее близкое значение. В данном случае можно использовать арматурные стержни толщиной 12 мм.

Определяем количество продольных стержней. Допустим, общая длина ленты составляет 30 м (лента 6 : 6 м с одной перемычкой 6 м).

Тогда количество рабочих стержней при длине 6 м составит:

(30 : 6) • 4 = 20 шт.

Определяем количество вертикальных стержней. Допустим, шаг хомутов составляет 50 см.

Тогда при длине ленты 30 м понадобится:

Определяем длину одного хомута.

Для этого от ширины и высоты сечения отнимаем по 10 см и складываем результаты:

(40 — 10) + (100 — 10) = 120 см. Длина одного хомута равна 120 • 2 = 140 см = 2,4 м.

Общая длина вертикальной арматуры:

2,4 • 60 = 144 м. Количество стержней при длине 6 м составит 144 : 6 = 24 шт.

Виды и размеры

Существует две основные разновидности арматуры:

Металлические стержни, используемые для сборки арматурного каркаса, имеют ребристую или гладкую поверхность.

Ребристые стержни идут на горизонтальную (рабочую) арматуру, так как они имеют повышенную силу сцепления с бетоном, необходимую для качественного выполнения своих функций.

Вертикальные прутки, как правило, гладкие, так как их задача сводится к поддержанию в нужном положении рабочих стержней до момента заливки. Диаметр стержней колеблется в пределах от 5,5 до 80 мм. Для частного домостроения используются рабочие стержни 10, 12 и 14 мм и гладкие 6-8 мм.

Композитная арматура состоит из разных элементов:

Наиболее широко применяется стеклопластиковая арматура.

Она имеет наибольшую прочность, самая жесткая и устойчивая к растягивающим нагрузкам из всех остальных вариантов.

Как и все виды композитных стержней, стеклопластиковая арматура полностью устойчива к воздействию влаги.

Производители заявляют о неизменности эксплуатационных качеств в течение всего периода службы, но на практике справедливость такого утверждения пока не проверена. Проблема композитной арматуры в сложности технологии, из-за которой качество материала у разных производителей заметно отличается.

Кроме того, композитные стержни не способны сгибаться, что неудобно при сборке каркасов и снижает прочность угловых соединений каркаса.

Как сделать правильный выбор

Выбор арматурных стержней основан на расчетных данных и предпочтениях строителей.

Обычно выбирают металлические стержни, хотя и композитную арматуру с каждым годом все активнее применяют при строительстве ленточных оснований. Предпочтение металлическим пруткам отдается из-за возможности придать им необходимый изгиб, чего со стеклопластиковыми стержнями сделать невозможно.

Особенно это важно при строительстве лент с криволинейными участками или при наличии углов перелома, отличных от 90°.

Кроме того, металлическая арматура экономичнее, так как позволяет делать хомуты из одного прутка, без необходимости создавать несколько точек соединения.

Диаметры стержней давно отработаны на практике, нередко их выбирают без предварительного расчета — при ширине ленты около 30 см используют пруток 10 мм, для лент шириной 40 см выбирают 12-мм стержни, а при ширине более 50 см — 14 мм. Толщину вертикальной арматуры определяют по высоте ленты, до 70 см выбирают 6 мм, а при высоте свыше 70 см — 8 мм и более.

Полезное видео

В данном разделе Вы также сможете посмотреть как производится расче на примере реальной стройки:

Заключение

Грамотно выбранная схема армирования и сам материал обеспечивают прочность и устойчивость ленты к возможным нагрузкам.

Сложные и проблемные грунты, склонные к пучению или сезонным подвижкам, требуют ответственного и внимательного подхода к армированию ленты.

Необходимо учитывать, что все расчетные значения определяют минимальные параметры конструкции, требующие некоторого увеличения для определенного запаса прочности.

Выбирая арматуру и схему армирования, надо умножать все значения на 1,2-1,3 (коэффициент надежности), чтобы снизить риск появления непредвиденных факторов.

Калькулятор строительства дома, онлайн расчет сметы на строительство дома

В этом разделе вы сможете узнать о шагах, ведущих к готовому дому, методах контроля строительства, посмотреть репортажи с объектов и ознакомиться с экспертным мнением наших специалистов

1.

 Подбор проекта, адаптация проекта к участку, подбор материалов

Участок для строительства найден, вы подобрали или разработали индивидуальный проект и готовы двигаться дальше. Следующим шагом станет адаптация проекта под условия участка. Перед началом работ мы оценим ряд факторов: геологические и геодезические условия строительства, расположение инженерных коммуникаций, доступность участка для строительной техники, экологические условия.

Рекомендуем высадить деревья и кустарники перед началом возведения дома, чтобы они могли расти, пока идут строительные работы.

Проекты, которые разработаны индивидуально, уже адаптированы под конкретный участок. При подготовке к строительству по типовому проекту сотрудник «Строй Экспресс» выезжает на площадку для проведения наблюдений и измерений, затем заполняет техническое задание на адаптацию проекта.

Если потребуется, мы внесем изменения в проектную документацию.

2. Составление сметы, заключение договора

В смете прописываются необходимые материалы для проведения работ в правильной последовательности и нужных объемах.

Со сметой легко контролировать подрядчика и анализировать затраты.

Получив смету и достигнув понимания по стоимости работ и материалов, переходим к заключению договора. В договоре фиксируется календарный план работ, план финансирования, ответственность сторон и гарантии. Cогласовывается и оформляется разрешительная документация на проведение строительства

Когда подписи поставлены, приступаем к строительству.

Рассчитайте стоимость строительства

Количество этажей

Калькулятор строительства дома

Расчет строительства дома – один из самых важных этапов при принятии решения обзавестись загородным коттеджем. Каждая семья обладает разным бюджетом. Одних может оттолкнуть даже незначительное превышение суммы, которую они ожидали потратить, другие же готовы переплатить, но получить максимум комфорта. Как бы то ни было, знать ориентировочную сумму затрат заранее – важно и необходимо.

Компания «Строй-Экспресс» предлагает вам онлайн-калькулятор строительства дома, который позволит заранее рассчитать бюджет на постройку с учетом главных особенностей возведения объекта.

Объективный подход к расчетам

Наш калькулятор работает по принципу учета реальных объемов работ. Мы принимаем во внимание каждый сегмент стройки: сооружение фундамента, стен, перекрытий, кровли и др. Этот способ подсчета является наиболее точным из всех принятых в строительстве, однако и для него возможны отклонения от итоговой суммы в пределах 15 %.

Элементы формирования цены

Фундамент. Компания «Строй-Экспресс» сооружает 3 типа фундаментов: ленточный, свайный, плитный. На количество используемых материалов влияет общая площадь цоколя.

Стены. Расчет сметной стоимости строительства может выполняться с учетом использования кирпича, газосиликатных блоков, бруса. Для вычисления важно указать материал, количество этажей и наличие цоколя и мансарды.

Перекрытия. Они могут выполняться из плит, монолитных конструкций или деревянных балок. Количество перекрытий определяется этажностью.

Кровля. Вы можете рассчитать смету на строительство дома с мягким кровельным материалом или металлочерепицей. Наш калькулятор стоимости строительства дома – бесплатный и удобный в использовании!

3. Строительство, сдача в эксплуатацию

На каждый объект мы запускаем отдельный процесс. В нем отмечаются этапы проведения работ, сроки контроля, сдачи и ответственные по каждому этапу. Заказчик получает доступ к системе контроля, видит текущие процессы и планирует участие в них, если это требуется.

Этапы строительства

Нулевой цикл. Создается фундамента дома или подвала. Строители снимают верхний земельный слой на месте будущей постройки, подготавливают котлован или траншею под опорную конструкцию, закладывают коммуникации (электричество, водопровод и др. ). Под общей плитой устанавливается дренажная система и дополнительная сливная труба для канализации. После строительства и гидроизоляции фундамента остаточные пустоты засыпаются грунтом.

Основные строительные работы. Возводятся стены и перекрытия этажей. Монтируются внутренние перегородки, лестницы, устраивается крыша и навесы, устанавливаются наружные двери, окна, гаражные ворота. Фасада коттеджа отделывается сайдингом, штукатуркой, фасадным кирпичом, декоративным камнем или другими материалами.

Проведение коммуникаций. Проводятся основные коммуникаций: электрическая сеть, водопровод, канализация, системы отопления и газа. Производится монтаж части инженерного оборудования: прокладка труб, устройство главного щита, основной проводки, нагревательного котла, временных кранов, заглушек, розеток. Специалисты устанавливают видеонаблюдения, системы вентиляции и кондиционирования, охранную и пожарную сигнализацию, закладку кабельных линий для телевидения и интернета.

Внутренняя отделка. На данном этапе обрабатываются потолки, стены, выравнивается пол, укладывается напольное покрытие, монтируются межкомнатные двери. При внутренней отделке дома окончательно устанавливается инженерное оборудование, осветительные приборы и розетки, компьютерная сеть, датчики сигнализаций, радиаторы отопления.

После окончания работ мы предоставляем отчет о выполненной работе с фотографиями этапов и подписываем акт приемки. Затем заказчик делает финальную оплату, и вступают в силу гарантийные обязательства.

Стройте с профессионалами

Оставьте заявку через форму, и мы ответим вам в течение суток.

Качества не бывает без постоянного контроля

Мы ответственно относимся к качеству работ, поэтому большое внимание уделяем внимание контролю.

Контроль важен на всех этапах работ: при разработке эскизной проектной документации, при конструктивном проектировании объектов, при закупке материалов, деталей, инструментов, и главное, при производстве строительных и монтажных работ.

Контроль качества проекта

Качествественный проект должен соответствовать ожиданиям заказчика, его культурным вкусам и запросам, поэтому архитектурная композиция и отделка здания должна быть спроектирована и продумана тщательно.

Конструктивная надежность как сооружения в целом, так и его узлов зависит от качественного проекта раздела. За качество проекта отвечает главный архитектор. Он организует работу группы проектировщиков и ставит свою подпись на каждой странице проекта.

Контроль качества материалов

Мы используем сертифицированные и проверенные материалы известных брендов.

За качество материалов, механизмов и инструментов отвечают наши поставщики.

Контроль качества работ

Качество строительства зависит от квалификации бригадиров и рабочих, от соблюдения технологической последовательности работ.

Оперативный контроль за качеством работ возложен на прораба, строительного мастера и бригадира, которые выполняют его непрерывно.

Главный инженер, технический руководитель организации, осуществляет систематический выборочный контроль качества работ и посещает стройки.

Приемочный контроль служит для оценки качества законченных сооружений или их частей, а также скрытых работ.

Благодаря такому подходу, мы уверены в качестве возводимых домов. Поэтому даем на них гарантию в два раза большую, чем у конкурентов.

Смета важна и на этапе проектирования, и на этапе строительства. При проектировании она определяет облик дома, а при строительстве помогает контролировать расход материалов и денег на стройку. Если вы хотите узнать, сколько будет стоить строительство загородного дома, вам просто нужна строительная смета.

При составлении смет указываем текущие цены на строительном рынке, а не те, что указаны в прошлогодних справочниках.

Правильно составленная смета поможет точно определить собственные возможности, провести переговоры с подрядчиками, оперируя цифрами, и выбрать правильный вариант организации работ.

Стоимость сметы

Площадь здания

Типовой проект

Индивидуальный проект

Сторонний проект

Заказать смету

Укажите тип сметы и оставьте свои контактные данные.

Карта стройки

загрузка карты…

В «Никона Строй» представили онлайн-калькулятор стоимости ремонта :: Новости компаний :: РБК Недвижимость

Компания «Никона Строй» специализируется на полном комплексе ремонтных услуг в жилых и коммерческих помещениях. Посетителям своего сайта компания предлагает онлайн-инструменты для удаленного просчета ориентировочной стоимости работ

Функционал для объективного выбора

Как отметил инженер подрядчика Дмитрий Серков, несмотря на то что онлайн-калькуляторы дают только ориентировочные расчеты, на начальном этапе они помогают определиться с выбором исполнителя-подрядчика, определить границы бюджета и перечень работ.

Так как ремонт квартиры сложное мероприятие с индивидуальными требованиями и нюансами, Дмитрий все же рекомендует вызывать замерщиков для формирования точной и не плавающей в ходе работ сметы. При выезде инженера потенциальные клиенты получают точный расчет, ответы на вопросы и полное представление о том, как будет проходить ремонт конкретно на их квадратных метрах.

Как работает калькулятор

Специалисты компании «Никона Строй» предложили посетителям портала многофункциональный инструмент. Кроме базовых показателей вроде количества комнат, площади помещений и высоты потолков, пользователю предлагают сразу определиться с перечнем планируемых работ — отделкой пола, стен, потолка, монтажными и демонтажными работами.

В расчет стоимости также можно добавить составление дизайн-проекта, указать тип ремонта (черновой, капитальный, косметический, евро и так далее), а также рассчитать скидку при оформлении заказа на сайте.

По мнению экспертов компании, набор виртуальных инструментов даст возможность целевой аудитории понять, какие работы они хотят делать в процессе ремонта, как добавление или удаление той или иной услуги влияет на стоимость, стоит ли делать ремонт сразу во всех комнатах, заказывать дополнительные услуги и так далее.

Калькулятор — это еще не все

Дмитрий Серков добавил, что онлайн-калькулятор — это, наравне с публичным прайс-листом, только один из инструментов планирования предстоящих работ и выбора исполнителя.

Выбирая подрядчика для ремонта в квартире, доме или офисе, не менее, а может, и более важно ориентироваться на прозрачные, понятные, честные условия сотрудничества.

Специалист обратил внимание, что у них, к примеру, можно бесплатно вызвать замерщика; составить смету и договор с гарантией сохранения цен; на ремонт дается официальная гарантия; оплата за работы делается поэтапно. Наравне с онлайн-калькулятором эти условия позволяют заказчику чувствовать себя спокойно и уверенно.

Онлайн калькулятор потолков Грильято, расчет по площади

Вы приняли решение в пользу подвесного потолка Грильято. Теперь вам необходимо рассчитать комплектующие. Так как Грильято состоит из ряда элементов, и чтобы сделать точный расчет их количества, предлагаем воспользоваться удобным и бесплатным сервисом онлайн — калькулятор грильято по площади. Все, что вам нужно – это ввести данные в окна и нажать кнопку «Рассчитать». Система мгновенно выдаст полный расчет грильято.

Другие калькуляторы:

Какие данные нужны, чтобы посчитать количество необходимых элементов для сборки потолка Грильято

Для этого вам необходимо знать площадь помещения, где будет установлен потолок (м²), длину периметра (м), размер и высоту ячейки. Полученные расчеты, для вашего удобства, можно распечатать или отправить нам для оформления заказа и доставки.

Как правильно подобрать подвесной потолок

Для того чтобы сделать правильный выбор, необходимо детально изучить все характеристики подвесных потолков Грильято. Рассмотрим подробнее основные параметры:

  • Размер ячеек — от 50*50 до 200*200 мм. В помещениях с потолками высотой до 3 метров рекомендуется использовать решетки с ячейкой до 100*100 мм, а выше 3 метров 120*120 мм и больше.
  • Высоту профиля – помогает визуально закрыть видимость чернового потолка, поэтому важно учитывать этот момент для гармоничной и правильной организации пространства.
  • Цвет потолка подбираются в зависимости от личного вкуса, назначения и требований к освещению. Также цвет потолка влияет на светоотражение светового потока, а так как в торговых помещениях хорошая освещенность очень важна, хорошо, что бы потолок имел максимальный коэффициент светоотражения. Учитывать этот фактор необходимо для того, чтобы добиться хорошей освещенности больших площадей при минимально возможном количестве светильников. Белый цвет имеет самый высокий коэффициент отражения света.
  • Вид потолка. Существует несколько основных видов:
    • стандартный – квадратные ячейки, монтируется параллельно относительно пола;
    • жалюзи – состоит из прямоугольных секций, монтируется на различной высоте профиля;
    • пирамидальный – ячейки не стандартной формы, используются с целью увеличения пространства;

Все эти виды обеспечивают легкий доступ к за потолочным коммуникациям.

Калькулятор забора из профнастила онлайн


Введите общую длину забора:

Калькулятор забора из профнастила
Общая длина:
Высота забора(профилированного листа): 1,5 м,1,8 м2,0 м2,2 м2,5 м
Выбор покрытия: С8 без покрытия(оцинкованный) 0.4 ммС8 одностороннее полимерное покрытие 0.4 ммС20 без покрытия(оцинкованный) 0.5 ммС20 одностороннее полимерное покрытие 0.5 ммС20 двухстороннее полимерное покрытие 0.5 ммС20 односторонний под цвет дерева, камня, кирпича 0.5 ммС20 двухсторонний под цвет дерева, камня, кирпича 0.5 мм
Количество горизонталей (лаги): 23
Кол-во ворот: 0123
Ширина ворот: 3,0 м. 3,5 м.4,0 м.
Кол-во калиток: 0123
Саморезы в цвет забора или оцинкованные: оцинкованныев цвет
Расстояние от МКАД:
Вывоз генератора:

Предлагаем Вашему вниманию калькулятор расчета стоимости забора из профнастила от компании Строй Забор. Данная услуга позволяет посчитать приблизительную цену ограждения из профлиста. Введите необходимые данные и Вы получите результат, который даст оценку постройки ограждения. В этот расчет включены наибольшее количество основных пунктов, которые прописаны в смете. Но нужно помнить, что сама смета и договор составляется и утверждается на месте после замеров специалистом участка.

Данный калькулятор позволяет произвести расчет, не выходя из дома, и облегчить переговоры по установке с менеджерами компании. Наши менеджеры смогут Вам подробнее объяснить, как происходит этап установки. Присутствие заказчика на участке необходимо поскольку любые вопросы, которые возникают у наших клиентов, будут решены нашими профессионалами-монтажниками. 

            Калькулятор профнастила – это интересное решение вопросов строительства забора из профлиста. Воспользуйтесь им, чтобы заранее знать, сколько нужно накопить или выделить денег для строительства, чтобы на вашем участке сияло новое ограждение, которые имеет низкую стоимость. По проведенным исследованиям и по изучению услуг на сайтах наших конкурентов, сделали вывод, что у нас шокирующе низкие цены. Поэтому смело заказывайте забор от производителя и будьте уверены в надежности. Мы поставим качественное и долговечное ограждение. 

Расчет ленточного фундамента, онлайн калькулятор

Информация по назначению калькулятора

Онлайн калькулятор монолитного ленточного фундамента предназначен для расчетов размеров, опалубки, количества и диаметра арматуры и объема бетона, необходимого для обустройства данного типа фундамента. Для определения подходящего типа фундамента, обязательно обратитесь к специалистам.

Все расчеты выполняются в соответствии со СНиП 52-01-2003 «Бетонные и железобетонные конструкции», СНиП 3.03.01-87 и ГОСТ Р 52086-2003

Ленточный фундамент представляет собой монолитную замкнутую железобетонную полосу, проходящую под каждой несущей стеной строения, распределяя тем самым нагрузку по всей длине ленты. Предотвращает проседание и изменение формы постройки вследствие действия сил выпучивания почвы.

Основные нагрузки сконцентрированы на углах. Является самым популярным видом среди других фундаментов при строительстве частных домов, так как имеет лучшее соотношение стоимости и необходимых характеристик.

Существует несколько видов ленточных фундаментов, такие как монолитный и сборный, мелкозаглубленный и глубокозаглубленный. Выбор зависит от характеристик почвы, предполагаемой нагрузки и других параметров, которые необходимо рассматривать в каждом случае индивидуально. Подходит практически для всех типов построек и может применяться при устройстве цокольных этажей и подвалов.

Проектирование фундамента необходимо осуществлять особенно тщательно, так как в случает его деформации, это отразится на всей постройке, а исправление ошибок является очень сложной и дорогостоящей процедурой.

При заполнении данных, обратите внимание на дополнительную информацию со знаком Дополнительная информация

Далее представлен полный список выполняемых расчетов с кратким описанием каждого пункта.

Общие сведения по результатам расчетов

  • Общая длина ленты

— Длина фундамента по центру ленты с учетом внутренних перегородок.

  • Площадь подошвы ленты

— Площадь опоры фундамента на почву. Соответствует размерам необходимой гидроизоляции.

  • Площадь внешней боковой поверхности

— Соответствует площади необходимого утеплителя для внешней стороны фундамента.

— Объем бетона, необходимого для заливки всего фундамента с заданными параметрами. Так как объем заказанного бетона может незначительно отличаться от фактического, а так же вследствие уплотнения при заливке, заказывать необходимо с 10% запасом.

— Указан примерный вес бетона по средней плотности.

  • Нагрузка на почву от фундамента

— Распределенная нагрузка на всю площадь опоры.

  • Минимальный диаметр продольных стержней арматуры

— Минимальный диаметр по СП 52-101-2003, с учетом относительного содержания арматуры от площади сечения ленты.

  • Минимальное кол-во рядов арматуры в верхнем и нижнем поясах

— Минимальное количество рядов продольных стержней в каждом поясе, для предотвращения деформации ленты под действием сил сжатия и растяжения.

  • Минимальный диаметр поперечных стержней арматуры (хомутов)

— Минимальный диаметр поперечных и вертикальных стержней арматуры (хомутов) по СП 52-101-2003.

  • Шаг поперечных стержней арматуры (хомутов)

— Шаг хомутов, необходимых для предотвращения сдвигов арматурного каркаса при заливке бетона.

  • Величина нахлеста арматуры

— При креплении отрезков стержней внахлест.

  • Общая длина арматуры

— Длина всей арматуры для вязки каркаса с учетом нахлеста.

  • Общий вес арматуры

— Вес арматурного каркаса.

  • Толщина доски опалубки

— Расчетная толщина досок опалубки в соответствии с ГОСТ Р 52086-2003, для заданных параметров фундамента и при заданном шаге опор.

  • Кол-во досок для опалубки

— Количество материала для опалубки заданного размера.

Строительный калькулятор онлайн — АРТ-Строй. Ремонт и отделка помещений в Москве

Калькулятор ремонта

Наконец пришло долгожданное время затеять ремонт в своей квартире. Но за что взяться? В связи с такой ответственной переменой в жизни возникает уйма вопросов: «Хватит ли денег на полный ремонт? Может для начала сделать частичную отделку? Натяжные потолки будут слишком дорогие? Что выбрать линолеум или паркет?» Этот список может быть бесконечным и так и остаться списком, потому что от переизбытка вопросов вам захочется просто отказаться от идеи сделать ремонт. Но наш калькулятор ремонта станет для вас действительно спасательным кругом. Он поможет рассчитать ремонт квартиры Калькулятор – это совершенно новая услуга и более практичная, чем изучение десятков, а то и сотен прайс-листов разнообразных компаний и попытки просчитать, как сделать строительные работы дешевле.

Эта услуга совершенно проста – калькулятор ремонта онлайн позволит вам задать параметры вашей квартиры, дальше дело за нами. Калькулятор стоимости ремонта подставит существующие рыночные цены и просчитает стоимость работ. Лично для вас будет составлена полная смета на ремонт квартиры калькулятор ом. В ней будет указано, на какие виды работ, какая сумма понадобится.

Калькулятор ремонта квартиры сможет просчитать стоимость работ отдельно для каждой комнаты, санузла, балкона, лоджии, кухни и т. д. Причём вам нужно будет всего лишь указать площадь помещения, а дальше, как говорится, дело техники. Дополнительно вы можете уточнить, какие вы хотите материалы отделки, возможно, пожелания по отдельным видам работ. Например, калькулятор сметы ремонта сможет помочь вам с расчётом работ в ванной комнате. Калькулятор ремонта ванной просчитает, какая цена плитки для внутренней отделки, сколько будет стоить её укладка, облицовка, стоимость установки трубы и т. д.

Особенно эта услуг будет полезна для тех, кто собирается делать капитальный ремонт. В таком случае производится перепланировка помещения и чаще всего используются дорогие материалы и технологии. Ещё такой тип ремонта называют ремонт под ключ Калькулятор нашего сервиса сможет просчитать всю стоимость работ до мелочей. Даже, в сложных ситуациях, на первый взгляд, например, если вам необходимо снести какую-то стенку для расширения комнаты.

Кроме того, мы не забыли о калькулятор ремонта дома. Он работает по такой же системе, как и калькулятор стоимости ремонта квартиры. Вам будет необходимо лишь расписать параметры каждого помещения отдельно на этажах вашего дома.

Калькулятор ремонта в новостройке иногда также необходим. Например, когда вы только заселились, но видите, что есть мелкие недоработки или вам не нравится какие-то детали интерьера. У вас есть огромный выбор строительных работ, стоимость которых наш сервис может просчитать: демонтаж, внутренняя отделка, услуги электрика, прокладка кабеля, сантехника, установка замков, дверей, монтаж кондиционеров и многое другое. Если вы хотите сделать какие-то конкретные работы и узнать цену на них, то наш калькулятор ремонта квартиры в новостройке. несомненно, будет полезен.

Калькулятор расчета стоимости ремонта дает возможность владельцу квартиры сориентироваться в своих дальнейших действиях и принять правильное решение относительно выбора материалов и использования строительных технологий. Вы сможете заниматься более насущными делами, не будете тратить силы и энергию, калькулятор расчета ремонта квартиры избавит вас от этого.

Также у нас есть дополнительные услуги: просчёт стоимости перевозок и уборки помещений. Сервис покажет вам текущие средние цены на эти виды работ.

Мы анализируем и меняем цены на строительные работы каждый час, поэтому наш расчет будет максимально точным. Мы вас уверяем, наш калькулятор ремонта вам точно пригодится. Большое количество желающих сделать ремонтные работы уже испробовали эту услугу, теперь пришло ваше время проверить, как работает калькулятор расчета стоимости ремонта квартиры. и вы убедитесь, что это незаменимая вещь.

Собираетесь начать ремонт, но не знаете, во сколько это обойдётся? Калькулятор стоимости ремонта спешит вам на помощь. Калькулятор ремонта онлайн – это действительно простая и очень удобная услуга. Мы убеждены, что она вам пригодится в любом случае жизни. Калькулятор ремонта работает очень просто. Вы указываете площадь вашего помещения или отдельной его части, и калькулятор ремонта квартиры практически моментально составляет смета на ремонт квартиры Калькулятор – это лучший помощник в ремонтных работах. Вы сможете узнать заранее, какую приблизительно сумму вам придётся потратить на необходимые работы. Если вы сомневаетесь в каких-то строительных решениях, калькулятор стоимости ремонта квартиры поможет вам определиться.

На нашем ресурсе Все работники есть много возможностей: вы можете использовать как калькулятор ремонта в новостройке. так и калькулятор ремонта ванной. балкона, коридора и так далее. То есть калькулятор расчета ремонта квартиры никаким образом не ограничивает вас.

Онлайн калькулятор ремонта квартиры позволит вам собственноручно рассчитать стоимость работ, как в комплексе, так и по отдельным видам отделочных и ремонтных работ. Вам нужно просто указать в любом разделе и в любой ячейке, сколько м² или метров погонных необходимо сделать, например, внутренней отделке, и калькулятор ремонта комнаты покажет существующую среднюю цену. То есть калькулятор расчета стоимости ремонта поможет вам просчитать стоимость каждого отдельного вида работ: демонтажа, укладки фанеры, штукатурки, услуг электрика, прокладки кабеля, сантехники, установки замков, дверей, монтажа кондиционеров и многое другое.

Калькулятором стоимости ремонта новостройки можно воспользоваться в любое время, когда у вас только возникнет такая необходимость. Вам не придётся тратить никаких сил и энергии. Смета на ремонт квартиры калькулятор составится моментально, и уже через пару секунд вы сможете подробно изучить сумму, на которую можете рассчитывать. Это очень легко – просто заполните предоставленную форму. Калькулятор сметы ремонта поможет вам сориентироваться в средней ценовой политике, которая сейчас существует среди строителей, и сделать правильный выбор из представленных компаний и бригад.

Калькулятор ремонта дома – это действительно необходимо. Ведь чтобы построить или сделать ремонт на нескольких этажах, нужно потратить уйму времени на просчёты стоимости всех необходимых работ. Но с нашим сервисом это сделать элементарно просто.

Наш калькулятор расчета ремонта квартиры поможет вам справиться с любой, даже самой безнадёжной задачей. Мы убеждены, что рассчитать ремонт квартиры калькулятор сможет безупречно, и вы останетесь довольны нашим сервисом.

Трехэтапное руководство по созданию настраиваемого калькулятора для вашего веб-сайта

Играете с идеей иметь настраиваемый калькулятор, доступный для использования на вашем веб-сайте? Вы будете рады, что сначала прочтете это. Пользовательские онлайн-калькуляторы могут быть отличным дополнением к вашему сайту — или они могут быть потрачены впустую. Обеспечьте первое. Вот краткое трехэтапное руководство, которое поможет вашему калькулятору добиться успеха!

1. Главное в первую очередь; нужны ли вложения?

Все сводится к вашей целевой аудитории и бизнес-целям. Считают ли ваши идеальные потенциальные клиенты ценным ваш калькулятор? Поможет ли этот инструмент вам в достижении конкретной цели? Многие компании уже используют внутри себя калькулятор, который можно легко преобразовать в версию веб-сайта, что делает это очевидным шагом. Вот пример клиента PMG.

Steiner Technologies, лидер в производстве автоматических расточных станков, уже использовала внутренний калькулятор в электронной таблице Excel, чтобы рассчитать, сколько времени цикла их потенциальные клиенты могут сэкономить с помощью своего инструмента Autofacer®.Было разумно разрешить посетителям веб-сайта производить расчеты непосредственно на сайте, чтобы убедиться, что их продукт подходит, особенно для тех, кто еще не был готов поговорить со своим отделом продаж.

Именно тогда родился калькулятор Штайнера. Мы использовали вычисления в электронной таблице для создания удобной веб-версии, которая также работает как образовательный инструмент продаж. Если посетителю веб-сайта нужна дополнительная информация, он может отправить форму, чтобы результаты были отправлены прямо на его почтовый ящик, а затем связаться с отделом продаж Steiner.

2. Определите лучший способ построения.

Если веб-калькулятор считается хорошей инвестицией, у вас есть несколько вариантов его создания, в зависимости от запланированной сложности вашего инструмента.

Первое, что вам нужно сделать, это наметить свой калькулятор в таблице Excel с подробными сведениями о том, как вы хотите, чтобы он работал. Например, хотите ли вы, чтобы в вашем калькуляторе были настройки по умолчанию? Хотели бы вы иметь возможность собирать данные, вводимые пользователями? Вы бы предпочли, чтобы пользователи видели результаты своих калькуляторов в режиме реального времени или после нажатия кнопки? Эти данные могут сделать ваш инструмент более сложным и удобным для пользователя.Заблаговременное планирование поможет вам избежать сложных и дорогостоящих правок, которые можно было легко внести в процессе первоначальной разработки.

Посмотрите эти примеры:

Совместно с вашим веб-сайтом и командой дизайнеров спланируйте и создайте инструмент. Если ваш калькулятор прост и вам удобно редактировать собственный веб-сайт, вы можете выбрать онлайн-конструктор калькуляторов, такой как SnapApp, Calculoid, SpreadsheetConverter, Calconic или JSCalc.io, если вы знаете JavaScript.

3.Сделай так, чтоб это работало!

Когда вся тяжелая работа будет завершена, вы готовы продвигать свой новый инструмент.


Начните здесь:

  • Разместите точку доступа к калькулятору на видном месте на своем веб-сайте — как ссылку в навигации по веб-сайту или как привлекательный CTA.
  • Поощряйте команду продаж использовать его в разговорах с потенциальными покупателями.
  • Продвигайте его в своих социальных сетях.
  • Используйте его в платной рекламе.

Как и любое дополнение к сайту, калькулятор — это не разовый проект.Всегда оптимизируйте! Проведите A / B-тестирование, чтобы увидеть, какие функции наиболее популярны среди посетителей вашего веб-сайта, и получите прямую обратную связь от них, а также от членов вашей команды.

Калькулятор может стать отличным лидогенератором, если все сделано правильно. Мы надеемся, что после прочтения этого руководства вы лучше понимаете, с чего начать. Если вы этого не сделаете, пожалуйста, оставьте комментарий. Мы рады помочь!

Как создать приложение калькулятора HTML с нуля, используя JavaScript

Это эпическая статья, в которой вы узнаете, как построить калькулятор с нуля.Мы сосредоточимся на JavaScript, который вам нужно написать: как подумать о создании калькулятора, как написать код и, в конечном итоге, как очистить свой код.

К концу статьи вы должны получить калькулятор, который работает точно так же, как калькулятор iPhone (без функций +/- и процентов).

Предварительные требования

Прежде чем пытаться продолжить урок, убедитесь, что вы хорошо владеете JavaScript. Как минимум, вам необходимо знать следующее:

  1. Операторы If / else
  2. Для циклов
  3. Функции JavaScript
  4. Стрелочные функции
  5. && и || Операторы
  6. Как изменить текст с помощью свойства textContent
  7. Как добавить слушателей событий с шаблоном делегирования событий

Перед тем, как начать

Я настоятельно рекомендую вам попробовать собрать калькулятор самостоятельно, прежде чем продолжить урок.Это хорошая практика, потому что вы научитесь думать как разработчик.

Вернитесь к этому уроку после того, как вы попробовали в течение одного часа (неважно, удастся ли вы или нет. Когда вы пытаетесь, вы думаете, и это поможет вам усвоить урок в два раза быстрее).

Итак, давайте начнем с понимания того, как работает калькулятор.

Создание калькулятора

Во-первых, мы хотим построить калькулятор.

Калькулятор состоит из двух частей: дисплея и клавиш.

  
0

Мы можем использовать CSS Grid для создания ключей, поскольку они расположены в виде сетки. Это уже было сделано за вас в стартовом файле. Вы можете найти стартовый файл на этой ручке.

  .calculator__keys {
  дисплей: сетка;
  / * другой необходимый CSS * /
}  

Чтобы помочь нам идентифицировать операторы, десятичные, чистые и равные ключи, мы собираемся предоставить атрибут data-action, который описывает их действие.

  

Прослушивание нажатия клавиш

Когда человек достает калькулятор, может произойти пять вещей. Они могут нажать:

  1. цифровую клавишу (0–9)
  2. клавишу оператора (+, -, ×, ÷)
  3. десятичную клавишу
  4. клавишу равенства
  5. клавишу очистки

Первые шаги для создания этого калькулятора необходимо иметь возможность (1) прослушивать все нажатия клавиш и (2) определять тип нажатой клавиши.В этом случае мы можем использовать шаблон делегирования событий для прослушивания, поскольку все ключи являются дочерними по отношению к .calculator__keys .

  const Calculator = document.querySelector («. Calculator»)
const keys = Calculator.querySelector («. Calculator__keys»)

keys.addEventListener (‘click’, e => {
 if (e.target.matches (‘button’)) {
   // Сделай что-нибудь
 }
})  

Затем мы можем использовать атрибут data-action для определения типа нажатой клавиши.

  const key = e.цель
const action = key.dataset.action  

Если ключ не имеет атрибута data-action , это должен быть цифровой ключ.

  если (! Действие) {
  console.log ('цифровой ключ!')
}  

Если ключ имеет действие с данными , которое представляет собой либо сложить , вычесть , умножить или разделить , мы знаем, что ключ является оператором.

  если (
  действие === 'добавить' ||
  действие === 'вычитание' ||
  действие === 'умножить' ||
  действие === 'разделить'
) {
  приставка.журнал ('ключ оператора!')
}  

Если действие данных ключа является десятичным , мы знаем, что пользователь щелкнул десятичный ключ.

Следуя тому же процессу мышления, если ключ data-action равен clear , мы знаем, что пользователь нажал на клавишу очистки (та, которая говорит AC). Если ключ data-action равен вычислить , мы знаем, что пользователь нажал на клавишу равенства.

  if (action === 'decimal') {
  console.log ('десятичный ключ!')
}

if (action === 'clear') {
  приставка.журнал ('ключ очистки!')
}

if (action === 'вычислить') {
  console.log ('равный ключ!')
}  

На этом этапе вы должны получить ответ console.log от каждой клавиши калькулятора.

Строим счастливый путь

Давайте посмотрим, что бы сделал средний человек, взяв в руки калькулятор. Это «то, что сделал бы средний человек», называется счастливым путем .

Давайте назовем обычного человека Мэри.

Когда Мэри берет калькулятор, она может нажать любую из этих клавиш:

  1. цифровая клавиша (0–9)
  2. клавиша оператора (+, -, ×, ÷)
  3. десятичная клавиша
  4. равная клавиша
  5. четкая клавиша

Одновременное рассмотрение пяти типов клавиш может быть затруднительным, поэтому давайте рассмотрим это шаг за шагом.

Когда пользователь нажимает цифровую клавишу

На этом этапе, если калькулятор показывает 0 (число по умолчанию), целевое число должно заменить ноль.

Если калькулятор показывает ненулевое число, целевое число должно быть добавлено к отображаемому числу.

Здесь нам нужно знать две вещи:

  1. Номер нажатой клавиши
  2. Текущий отображаемый номер

Эти два значения можно получить через свойство textContent нажатой клавиши и .Calculator__display соответственно.

  const display = document.querySelector ('. Calculator__display')

keys.addEventListener ('клик', e => {
  if (e.target.matches ('button')) {
    константный ключ = e.target
    const действие = key.dataset.action
    const keyContent = key.textContent
    const displayNum = display.textContent
    // ...
  }
})  

Если калькулятор показывает 0, мы хотим заменить дисплей калькулятора нажатой клавишей. Это можно сделать, заменив свойство textContent в отображении.

  если (! Действие) {
  if (displayNum === '0') {
    display.textContent = keyContent
  }
}  

Если калькулятор показывает ненулевое число, мы хотим добавить нажатую клавишу к отображаемому числу. Чтобы добавить число, мы объединяем строку.

  если (! Действие) {
  if (displayNum === '0') {
    display.textContent = keyContent
  } еще {
    display.textContent = displayNum + keyContent
  }
}  

На этом этапе Мэри может нажать любую из этих клавиш:

  1. Десятичный ключ
  2. Операторский ключ

Допустим, Мэри нажимает десятичный ключ.

Когда пользователь нажимает десятичную клавишу

Когда Мэри нажимает десятичную клавишу, на дисплее должно появиться десятичное число. Если Мэри наберет любое число после нажатия десятичной клавиши, это число также должно появиться на дисплее.

Чтобы создать этот эффект, мы можем объединить . на отображаемый номер.

  if (action === 'decimal') {
  display.textContent = displayNum + '.'
}  

Далее, допустим, Мэри продолжает свои вычисления, нажимая клавишу оператора.

Когда пользователь нажимает клавишу оператора

Если Мэри нажимает клавишу оператора, оператор должен быть выделен, чтобы Мэри знала, что оператор активен.

Для этого мы можем добавить к клавише оператора класс - нажатый .

  если (
  действие === 'добавить' ||
  действие === 'вычитание' ||
  действие === 'умножить' ||
  действие === 'разделить'
) {
  key.classList.add ('не работает')
}  

Как только Мэри нажмет клавишу оператора, она нажмет еще одну цифровую клавишу.

Когда пользователь нажимает цифровую клавишу после клавиши оператора

Когда Мэри снова нажимает цифровую клавишу, предыдущий дисплей должен быть заменен новым номером. Клавиша оператора также должна выйти из своего нажатого состояния.

Чтобы освободить нажатое состояние, мы удаляем класс находится в нажатом состоянии из всех клавиш с помощью цикла forEach :

  keys.addEventListener ('click', e => {
  if (e.target.matches ('button')) {
    константный ключ = e.target
    //...
    
    // Удаляем класс .is-depressed со всех клавиш
    Array.from (key.parentNode.children)
      .forEach (k => k.classList.remove ('находится в депрессии'))
  }
})  

Затем мы хотим обновить отображение нажатой клавиши. Прежде чем мы это сделаем, нам нужен способ узнать, является ли предыдущий ключ клавишей оператора.

Один из способов сделать это — использовать настраиваемый атрибут. Назовем этот настраиваемый атрибут data-previous-key-type .

  const Calculator = документ.querySelector ('. калькулятор')
// ...

keys.addEventListener ('клик', e => {
  if (e.target.matches ('button')) {
    // ...
    
    если (
      действие === 'добавить' ||
      действие === 'вычитание' ||
      действие === 'умножить' ||
      действие === 'разделить'
    ) {
      key.classList.add ('не работает')
      // Добавить настраиваемый атрибут
      Calculator.dataset.previousKeyType = 'оператор'
    }
  }
})  

Если previousKeyType является оператором, мы хотим заменить отображаемое число на число, по которому щелкнули мышью.

  const previousKeyType = Calculator.dataset.previousKeyType

if (! action) {
  if (displayNum === '0' || previousKeyType === 'operator') {
    display.textContent = keyContent
  } еще {
    display.textContent = displayNum + keyContent
  }
}  

Далее, допустим, Мэри решает завершить вычисление нажатием клавиши равенства.

Когда пользователь нажимает клавишу равенства

Когда Мэри нажимает клавишу равенства, калькулятор должен вычислить результат, который зависит от трех значений:

  1. Первое число , введенное в калькулятор
  2. Оператор
  3. Введенное в калькулятор второе число

После вычисления результат должен заменить отображаемое значение.

На данный момент нам известно только второе число , то есть текущее отображаемое число.

  if (action === 'вычислить') {
  const secondValue = displayNum
  // ...
}  

Чтобы получить первое число , нам нужно сохранить отображаемое значение калькулятора, прежде чем мы его очистим. Один из способов сохранить это первое число — добавить его в настраиваемый атрибут при нажатии кнопки оператора.

Чтобы получить оператор , мы также можем использовать ту же технику.

  если (
  действие === 'добавить' ||
  действие === 'вычитание' ||
  действие === 'умножить' ||
  действие === 'разделить'
) {
  // ...
  Calculator.dataset.firstValue = displayNum
  Calculator.dataset.operator = действие
}  

Когда у нас есть три нужных нам значения, мы можем выполнить вычисление. В конце концов, мы хотим, чтобы код выглядел примерно так:

  if (action === 'calculate') {
  const firstValue = Calculator.dataset.firstValue
  Оператор const = калькулятор.dataset.operator
  const secondValue = displayNum
  
  display.textContent = вычислить (firstValue, оператор, secondValue)
}  

Это означает, что нам нужно создать функцию Calculate . Он должен принимать три параметра: первое число, оператор и второе число.

  const вычислить = (n1, оператор, n2) => {
  // Выполняем расчет и возвращаем вычисленное значение
}  

Если используется оператор добавить , мы хотим сложить значения вместе.Если оператор вычитает , мы хотим вычесть значения и так далее.

  const вычислить = (n1, оператор, n2) => {
  пусть результат = ''
  
  if (operator === 'добавить') {
    результат = n1 + n2
  } else if (operator === 'subtract') {
    результат = n1 - n2
  } else if (operator === 'multiply') {
    результат = n1 * n2
  } иначе, если (оператор === 'делить') {
    результат = n1 / n2
  }
  
  вернуть результат
}  

Помните, что firstValue и secondValue на этом этапе являются строками.Если вы сложите строки вместе, вы объедините их ( 1 + 1 = 11 ).

Итак, перед вычислением результата мы хотим преобразовать строки в числа. Мы можем сделать это с помощью двух функций: parseInt и parseFloat .

  • parseInt преобразует строку в целое число .
  • parseFloat преобразует строку в число с плавающей запятой (это означает число с десятичными знаками).

Для калькулятора нам понадобится поплавок.

  const вычислить = (n1, оператор, n2) => {
  пусть результат = ''
  
  if (operator === 'добавить') {
    результат = parseFloat (n1) + parseFloat (n2)
  } else if (operator === 'subtract') {
    результат = parseFloat (n1) - parseFloat (n2)
  } else if (operator === 'multiply') {
    результат = parseFloat (n1) * parseFloat (n2)
  } иначе, если (оператор === 'делить') {
    результат = parseFloat (n1) / parseFloat (n2)
  }
  
  вернуть результат
}  

На этом счастливого пути!

Вы можете получить исходный код счастливого пути по этой ссылке (прокрутите вниз и введите свой адрес электронной почты в поле, и я отправлю исходные коды прямо в ваш почтовый ящик).

Крайние шкафы

Хапи-пути недостаточно. Чтобы создать надежный калькулятор, вам нужно сделать его устойчивым к странным шаблонам ввода. Для этого вы должны представить себе нарушителя спокойствия, который пытается сломать ваш калькулятор, нажимая клавиши в неправильном порядке. Назовем этого возмутителя спокойствия Тимом.

Тим может нажимать эти клавиши в любом порядке:

  1. Цифровая клавиша (0–9)
  2. Клавиша оператора (+, -, ×, ÷)
  3. Десятичная клавиша
  4. Клавиша равенства
  5. Очистить ключ

Что произойдет, если Тим ударит десятичную клавишу

Если Тим нажмет десятичную клавишу, когда на дисплее уже отображается десятичная точка, ничего не должно произойти.

Здесь мы можем проверить, что отображаемое число содержит . с включает метод .

включает проверочную строку для данного совпадения. Если строка найдена, она возвращает true ; в противном случае возвращается false .

Примечание : включает с учетом регистра.

  // Пример включения работы.
const string = 'Гамбургеры очень вкусные!'
const hasExclaimation = строка.includes ('!')
приставка.log (hasExclaimation) // true  

Чтобы проверить, есть ли в строке точка, мы делаем следующее:

  // Ничего не делать, если в строке есть точка
if (! DisplayNum.includes ('.')) {
  display.textContent = displayNum + '.'
}  

Затем, если Тим нажимает десятичную клавишу после нажатия клавиши оператора, на дисплее должно отображаться 0. .

Здесь нам нужно знать, является ли предыдущий ключ оператором. Мы можем это сказать, проверив настраиваемый атрибут data-previous-key-type , который мы установили на предыдущем уроке.

data-previous-key-type еще не завершен. Чтобы правильно определить, является ли previousKeyType оператором, нам нужно обновить previousKeyType для каждой нажатой клавиши.

  если (! Действие) {
  // ...
  Calculator.dataset.previousKey = 'число'
}

if (action === 'decimal') {
  // ...
  Calculator.dataset.previousKey = 'десятичный'
}

if (action === 'clear') {
  // ...
  Calculator.dataset.previousKeyType = 'очистить'
}

if (action === 'вычислить') {
 //...
  Calculator.dataset.previousKeyType = 'вычислить'
}  

Когда у нас есть правильный previousKeyType , мы можем использовать его, чтобы проверить, является ли предыдущий ключ оператором.

  if (action === 'decimal') {
  if (! DisplayNum.includes ('.')) {
    display.textContent = displayNum + '.'
  } else if (previousKeyType === 'operator') {
    display.textContent = '0'.
  }
  
Calculator.dataset.previousKeyType = 'десятичный'
}  

Что произойдет, если Тим нажмет клавишу оператора

Если Тим сначала нажмет клавишу оператора, клавиша оператора должна загореться.(Мы уже рассмотрели этот крайний случай, но как? Посмотрим, сможете ли вы определить, что мы сделали).

Во-вторых, ничего не должно произойти, если Тим нажимает одну и ту же клавишу оператора несколько раз. (Мы уже рассмотрели этот крайний случай).

Примечание: , если вы хотите улучшить UX, вы можете показать, что оператор постоянно нажимается, с некоторыми изменениями CSS. Мы не делали этого здесь, но посмотрим, сможете ли вы запрограммировать это самостоятельно в качестве дополнительной задачи кодирования.

В-третьих, если Тим нажимает другую клавишу оператора после нажатия первой клавиши оператора, первая клавиша оператора должна быть отпущена.Затем следует нажать вторую клавишу оператора. (Мы рассмотрели и этот крайний случай — но как?).

В-четвертых, если Тим нажимает число, оператор, число и другой оператор в этом порядке, на дисплее должно появиться вычисленное значение.

Это означает, что нам нужно использовать функцию Calculate , когда существуют firstValue , operator и secondValue .

  если (
  действие === 'добавить' ||
  действие === 'вычитание' ||
  действие === 'умножить' ||
  действие === 'разделить'
) {
  const firstValue = калькулятор.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  const secondValue = displayNum
  
// Примечание: достаточно проверить firstValue и оператор, потому что secondValue всегда существует
  if (firstValue && оператор) {
    display.textContent = вычислить (firstValue, оператор, secondValue)
  }
  
key.classList.add ('не работает')
  Calculator.dataset.previousKeyType = 'оператор'
  Calculator.dataset.firstValue = displayNum
  Calculator.dataset.operator = действие
}  

Хотя мы можем вычислить значение при повторном нажатии клавиши оператора, мы также ввели ошибку на этом этапе — при дополнительном нажатии клавиши оператора вычисляется значение, когда этого не должно быть.

Чтобы калькулятор не выполнял вычисления при последующих нажатиях клавиши оператора, нам нужно проверить, является ли previousKeyType оператором. Если это так, мы не выполняем расчет.

  если (
  firstValue &&
  оператор &&
  previousKeyType! == 'оператор'
) {
  display.textContent = вычислить (firstValue, оператор, secondValue)
}  

В-пятых, после того, как клавиша оператора вычисляет число, если Тим нажимает на число, за которым следует другой оператор, оператор должен продолжить вычисление, например: 8 - 1 = 7 , 7 - 2 = 5 , 5 - 3 = 2 .

Прямо сейчас наш калькулятор не может производить последовательные вычисления. Второе рассчитанное значение неверно. Вот что мы имеем: 99 - 1 = 98, , 98 - 1 = 0 .

Второе значение вычислено неправильно, потому что мы загрузили неправильные значения в функцию calculate . Давайте рассмотрим несколько изображений, чтобы понять, что делает наш код.

Понимание нашей функции вычисления

Сначала предположим, что пользователь нажимает на число 99. На данный момент в калькуляторе еще ничего не зарегистрировано.

Во-вторых, допустим, пользователь нажимает оператор вычитания. После того, как они щелкают по оператору вычитания, мы устанавливаем firstValue равным 99. Мы также устанавливаем оператор для вычитания.

В-третьих, допустим, пользователь нажимает второе значение — на этот раз это 1. На этом этапе отображаемое число обновляется до 1, но наши firstValue , operator и secondValue остаются неизменными.

В-четвертых, пользователь снова нажимает кнопку вычитания. Сразу после нажатия кнопки «Вычесть», прежде чем вычислить результат, мы устанавливаем значение secondValue в качестве отображаемого числа.

В-пятых, мы выполняем вычисление с помощью firstValue 99, operator subtract и secondValue 1. Результат — 98.

После вычисления результата мы устанавливаем отображение на результат. Затем мы устанавливаем operator на вычитание и firstValue на предыдущее отображаемое число.

Что ж, это ужасно неправильно! Если мы хотим продолжить вычисление, нам нужно обновить firstValue вычисленным значением.

  const firstValue = Calculator.dataset.firstValue
Оператор const = Calculator.dataset.operator
const secondValue = displayNum

если (
  firstValue &&
  оператор &&
  previousKeyType! == 'оператор'
) {
  const calcValue = вычислить (firstValue, оператор, secondValue)
  display.textContent = calcValue
  
// Обновить вычисленное значение как firstValue
  Calculator.dataset.firstValue = calcValue
} еще {
  // Если вычислений нет, установите displayNum в качестве firstValue
  калькулятор.dataset.firstValue = displayNum
}

key.classList.add ('не работает')
Calculator.dataset.previousKeyType = 'оператор'
Calculator.dataset.operator = action  

С этим исправлением последовательные вычисления, выполняемые клавишами оператора, теперь должны быть правильными.

Что произойдет, если Тим нажмет клавишу равенства?

Во-первых, ничего не должно произойти, если Тим нажмет клавишу равенства перед любой клавишей оператора.

Мы знаем, что клавиши оператора еще не были нажаты, если firstValue не задано как число.Мы можем использовать это знание, чтобы предотвратить вычисление равных.

  if (action === 'вычислить') {
  const firstValue = Calculator.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  const secondValue = displayNum
  
if (firstValue) {
    display.textContent = вычислить (firstValue, оператор, secondValue)
  }
  
Calculator.dataset.previousKeyType = 'вычислить'
}  

Во-вторых, если Тим набирает число, за которым следует оператор, за которым следует равенство, калькулятор должен вычислить результат так:

  1. 2 + = -> 2 + 2 = 4
  2. 2 - = -> 2 - 2 = 0
  3. 2 × = -> 2 × 2 = 4
  4. 2 ÷ = -> 2 ÷ 2 = 1

ср. уже приняли во внимание этот странный ввод.Вы понимаете почему? 🙂

В-третьих, если Тим нажимает клавишу равенства после завершения вычисления, другое вычисление должно быть выполнено снова. Вот как должно выглядеть вычисление:

  1. Тим нажимает клавиши 5–1
  2. Тим нажимает равное количество раз. Расчетное значение: 5 - 1 = 4
  3. Tim совпадений. Расчетное значение: 4 - 1 = 3
  4. Tim совпадений. Расчетное значение: 3 - 1 = 2
  5. Тим совпадений. Расчетное значение: 2 - 1 = 1
  6. Tim совпадений.Расчетное значение: 1 - 1 = 0

К сожалению, наш калькулятор не дает точных расчетов. Вот что показывает наш калькулятор:

  1. Тим нажимает клавиши 5–1
  2. Тим нажимает равное количество раз. Расчетное значение: 4
  3. Тим совпадений. Расчетное значение: 1

Исправление расчетов

Во-первых, допустим, наш пользователь нажимает 5. На данный момент в калькуляторе еще ничего не зарегистрировано.

Во-вторых, допустим, пользователь нажимает оператор вычитания.После того, как они щелкают по оператору вычитания, мы устанавливаем firstValue равным 5. Мы также устанавливаем оператор на вычитание.

В-третьих, пользователь нажимает второе значение. Скажем, это 1. На этом этапе отображаемое число обновляется до 1, но наши firstValue , operator и secondValue остаются неизменными.

В-четвертых, пользователь нажимает клавишу равенства. Сразу после нажатия кнопки равно, но перед вычислением, мы устанавливаем secondValue как отображаемое Num

В-пятых, калькулятор вычисляет результат 5 - 1 и дает 4 .Результат обновляется на дисплее. firstValue и оператор переносятся в следующий расчет, поскольку мы не обновляли их.

В-шестых, когда пользователь снова нажимает «равно», мы устанавливаем secondValue на displayNum перед вычислением.

Вы можете сказать, что здесь не так.

Вместо secondValue нам нужно установить firstValue на отображаемое число.

  if (action === 'вычислить') {
  пусть firstValue = калькулятор.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  const secondValue = displayNum
  
if (firstValue) {
    if (previousKeyType === 'вычислить') {
      firstValue = displayNum
    }
    
display.textContent = вычислить (firstValue, оператор, secondValue)
  }
  
Calculator.dataset.previousKeyType = 'вычислить'
}  

Мы также хотим перенести предыдущее значение secondValue в новый расчет. Чтобы значение secondValue сохранялось до следующего вычисления, нам нужно сохранить его в другом настраиваемом атрибуте.Назовем этот настраиваемый атрибут modValue (обозначает значение модификатора).

  if (action === 'вычислить') {
  пусть firstValue = Calculator.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  const secondValue = displayNum
  
if (firstValue) {
    if (previousKeyType === 'вычислить') {
      firstValue = displayNum
    }
    
display.textContent = вычислить (firstValue, оператор, secondValue)
  }
  
// Установить атрибут modValue
  Calculator.dataset.modValue = secondValue
  калькулятор.dataset.previousKeyType = 'вычислить'
}  

Если previousKeyType — это вычислить , мы знаем, что можем использовать Calculator.dataset.modValue как secondValue . Как только мы это узнаем, мы сможем выполнить расчет.

  if (firstValue) {
  if (previousKeyType === 'вычислить') {
    firstValue = displayNum
    secondValue = Calculator.dataset.modValue
  }
  
display.textContent = вычислить (firstValue, оператор, secondValue)
}  

Таким образом, у нас есть правильный расчет при последовательном нажатии клавиши равенства.

Вернуться к клавише равенства

В-четвертых, если Тим нажимает десятичную клавишу или цифровую клавишу после клавиши калькулятора, дисплей должен быть заменен на 0. или новое число соответственно.

Здесь вместо того, чтобы просто проверять, является ли previousKeyType , оператором , нам также нужно проверить, соответствует ли вычисление .

  если (! Действие) {
  если (
    DisplayNum === '0' ||
    previousKeyType === 'оператор' ||
    previousKeyType === 'вычислить'
  ) {
    отображать.textContent = keyContent
  } еще {
    display.textContent = displayNum + keyContent
  }
  Calculator.dataset.previousKeyType = 'число'
}

if (action === 'decimal') {
  if (! DisplayNum.includes ('.')) {
    display.textContent = displayNum + '.'
  } иначе, если (
    previousKeyType === 'оператор' ||
    previousKeyType === 'вычислить'
  ) {
    display.textContent = '0'.
  }
  
Calculator.dataset.previousKeyType = 'десятичный'
}  

В-пятых, если Тим нажимает клавишу оператора сразу после клавиши равенства, калькулятор должен вычислить , а не .

Для этого мы проверяем, соответствует ли previousKeyType вычислить перед выполнением вычислений с клавишами операторов.

  если (
  действие === 'добавить' ||
  действие === 'вычитание' ||
  действие === 'умножить' ||
  действие === 'разделить'
) {
  // ...
  
если (
    firstValue &&
    оператор &&
    previousKeyType! == 'оператор' &&
    previousKeyType! == 'вычислить'
  ) {
    const calcValue = вычислить (firstValue, оператор, secondValue)
    отображать.textContent = calcValue
    Calculator.dataset.firstValue = calcValue
  } еще {
    Calculator.dataset.firstValue = displayNum
  }
  
// ...
}  

Клавиша очистки используется для двух целей:

  1. All Clear (обозначается AC ) очищает все и сбрасывает калькулятор в исходное состояние.
  2. Очистить запись (обозначается CE ) очищает текущую запись. Он сохраняет в памяти предыдущие числа.

Когда калькулятор находится в состоянии по умолчанию, должен отображаться AC .

Во-первых, если Тим нажимает клавишу (любую клавишу, кроме чистой), AC следует изменить на CE .

Мы делаем это, проверяя, является ли действие data-action clear . Если это не clear , мы ищем кнопку очистки и меняем textContent .

  if (action! == 'clear') {
  const clearButton = Calculator.querySelector ('[data-action = clear]')
  clearButton.textContent = 'CE'
}  

Во-вторых, если Тим достигает CE , на дисплее должно отображаться 0.В то же время CE следует вернуть к AC , чтобы Тим мог сбросить калькулятор в исходное состояние. **

  if (action === 'clear') {
  display.textContent = 0
  key.textContent = 'AC'
  Calculator.dataset.previousKeyType = 'очистить'
}  

В-третьих, если Тим достигает AC , сбросьте калькулятор в исходное состояние.

Чтобы вернуть калькулятор в исходное состояние, нам нужно очистить все настраиваемые атрибуты, которые мы установили.

  if (action === 'clear') {
  если (ключ.textContent === 'AC') {
    Calculator.dataset.firstValue = ''
    Calculator.dataset.modValue = ''
    Calculator.dataset.operator = ''
    Calculator.dataset.previousKeyType = ''
  } еще {
    key.textContent = 'AC'
  }
  
display.textContent = 0
  Calculator.dataset.previousKeyType = 'очистить'
}  

Вот и все — по крайней мере, для части крайних корпусов!

Вы можете получить исходный код для части крайних случаев по этой ссылке (прокрутите вниз и введите свой адрес электронной почты в поле, и я отправлю исходные коды прямо в ваш почтовый ящик).

На этом этапе код, который мы создали вместе, довольно запутан. Вы, вероятно, заблудитесь, если попытаетесь прочитать код самостоятельно. Давайте проведем рефакторинг, чтобы он стал чище.

Рефакторинг кода

Рефакторинг часто начинается с наиболее очевидных улучшений. В этом случае давайте начнем с и вычислим .

Прежде чем продолжить, убедитесь, что вы знакомы с этими методами / функциями JavaScript. Мы будем использовать их в рефакторинге.

  1. Ранний возврат
  2. Тернарные операторы
  3. Чистые функции
  4. ES6 Деструктуризация

Итак, приступим!

Рефакторинг функции вычисления

Вот что у нас есть на данный момент.

  const вычислить = (n1, оператор, n2) => {
  пусть результат = ''
  if (operator === 'добавить') {
    результат = firstNum + parseFloat (n2)
  } else if (operator === 'subtract') {
    результат = parseFloat (n1) - parseFloat (n2)
  } else if (operator === 'multiply') {
    результат = parseFloat (n1) * parseFloat (n2)
  } иначе, если (оператор === 'делить') {
    результат = parseFloat (n1) / parseFloat (n2)
  }
  
  вернуть результат
}  

Вы узнали, что нам следует максимально сократить количество повторных назначений.Здесь мы можем удалить присваивания, если вернем результат вычисления в операторах if и else if :

  const calculate = (n1, operator, n2) => {
  if (operator === 'добавить') {
    вернуть firstNum + parseFloat (n2)
  } else if (operator === 'subtract') {
    вернуть parseFloat (n1) - parseFloat (n2)
  } else if (operator === 'multiply') {
    вернуть parseFloat (n1) * parseFloat (n2)
  } иначе, если (оператор === 'делить') {
    вернуть parseFloat (n1) / parseFloat (n2)
  }
}  

Поскольку мы возвращаем все значения, мы можем использовать для раннего возврата .Если мы это сделаем, то больше не потребуется, если условия.

  const вычислить = (n1, оператор, n2) => {
  if (operator === 'добавить') {
    вернуть firstNum + parseFloat (n2)
  }
  
  if (operator === 'subtract') {
    вернуть parseFloat (n1) - parseFloat (n2)
  }
  
  if (operator === 'умножить') {
    вернуть parseFloat (n1) * parseFloat (n2)
  }
  
  if (оператор === 'делить') {
    вернуть parseFloat (n1) / parseFloat (n2)
  }
}  

И поскольку у нас есть один оператор на , если условие , мы можем снять скобки.(Примечание: некоторые разработчики используют фигурные скобки). Вот как будет выглядеть код:

  const calculate = (n1, operator, n2) => {
  if (operator === 'add') вернуть parseFloat (n1) + parseFloat (n2)
  if (operator === 'subtract') вернуть parseFloat (n1) - parseFloat (n2)
  если (оператор === 'умножить') вернуть parseFloat (n1) * parseFloat (n2)
  если (оператор === 'делить') вернуть parseFloat (n1) / parseFloat (n2)
}  

Наконец, мы восемь раз вызывали parseFloat в функции.Мы можем упростить его, создав две переменные, содержащие значения с плавающей запятой:

  const calculate = (n1, operator, n2) => {
  const firstNum = parseFloat (n1)
  const secondNum = parseFloat (n2)
  если (оператор === 'добавить') вернуть firstNum + secondNum
  if (operator === 'subtract') вернуть firstNum - secondNum
  if (operator === 'multiply') вернуть firstNum * secondNum
  если (оператор === 'делить') вернуть firstNum / secondNum
}  

Мы закончили с , вычислим . Вам не кажется, что это легче читать по сравнению с тем, что было раньше?

Реорганизация прослушивателя событий

Код, который мы создали для прослушивателя событий, огромен.Вот что у нас есть на данный момент:

  keys.addEventListener ('click', e => {
  if (e.target.matches ('button')) {
  
    если (! действие) {/ * ... * /}
    
    если (действие === 'добавить' ||
      действие === 'вычитание' ||
      действие === 'умножить' ||
      action === 'разделять') {
      / * ... * /
    }
    
    if (action === 'clear') {/ * ... * /}
    if (действие! == 'очистить') {/ * ... * /}
    if (action === 'вычислить') {/ * ... * /}
  }
})  

Как начать рефакторинг этого фрагмента кода? Если вы не знакомы с передовыми методами программирования, у вас может возникнуть соблазн провести рефакторинг, разделив каждый вид действий на более мелкие функции:

  // Не делайте этого!
const handleNumberKeys = (/ *... * /) => {/ * ... * /}
const handleOperatorKeys = (/ * ... * /) => {/ * ... * /}
const handleDecimalKey = (/ * ... * /) => {/ * ... * /}
const handleClearKey = (/ * ... * /) => {/ * ... * /}
const handleCalculateKey = (/ * ... * /) => {/ * ... * /}  

Не делайте этого. Это не помогает, потому что вы просто разбиваете блоки кода. Когда вы это сделаете, функцию становится труднее читать.

Лучше всего разделить код на чистые и нечистые функции. Если вы это сделаете, вы получите следующий код:

  ключей.addEventListener ('клик', e => {
  // Чистая функция
  const resultString = createResultString (/ * ... * /)
  
  // нечистоты
  display.textContent = resultString
  updateCalculatorState (/ * ... * /)
})  

Здесь createResultString — это чистая функция, которая возвращает то, что необходимо отобразить на калькуляторе. updateCalculatorState — это нечистая функция, которая изменяет внешний вид калькулятора и настраиваемые атрибуты.

Создание createResultString

Как упоминалось ранее, createResultString должен возвращать значение, которое необходимо отобразить на калькуляторе.
Эти значения можно получить с помощью частей кода, в которых указано display.textContent = 'some value .

  display.textContent = 'some value'  

Вместо display.textContent = 'some value' мы хотим вернуть каждое значение, чтобы мы могли использовать его позже.

  // замените вышеприведенное на это
return 'some value'  

Давайте рассмотрим это вместе, шаг за шагом, начиная с цифровых клавиш.

Создание строки результата для цифровых клавиш

Вот код, который у нас есть для цифровых клавиш:

  if (! Action) {
  если (
    DisplayNum === '0' ||
    previousKeyType === 'оператор' ||
    previousKeyType === 'вычислить'
  ) {
    отображать.textContent = keyContent
  } еще {
    display.textContent = displayNum + keyContent
  }
  Calculator.dataset.previousKeyType = 'число'
}  

Первый шаг — скопировать части, которые говорят display.textContent = 'some value' , в createResultString . Когда вы это сделаете, убедитесь, что вы изменили display.textContent = на return .

  const createResultString = () => {
  if (! action) {
    если (
      DisplayNum === '0' ||
      previousKeyType === 'оператор' ||
      previousKeyType === 'вычислить'
    ) {
      вернуть keyContent
    } еще {
      return отображаетсяNum + keyContent
    }
  }
}  

Затем мы можем преобразовать оператор if / else в тернарный оператор:

  const createResultString = () => {
  if (действие!) {
    return displayNum === '0' ||
      previousKeyType === 'оператор' ||
      previousKeyType === 'вычислить'
      ? keyContent
      : displayNum + keyContent
  }
}  

При рефакторинге не забудьте записать список необходимых вам переменных.Мы вернемся к списку позже.

  const createResultString = () => {
  // Необходимые переменные:
  // 1. keyContent
  // 2. displayNum
  // 3. previousKeyType
  // 4. действие
  
  if (действие!) {
    return displayNum === '0' ||
      previousKeyType === 'оператор' ||
      previousKeyType === 'вычислить'
      ? keyContent
      : displayNum + keyContent
  }
}  

Создание строки результата для десятичного ключа

Вот код, который у нас есть для десятичного ключа:

  if (action === 'decimal') {
  если (! отображаетсяНум.включает('.')) {
    display.textContent = displayNum + '.'
  } иначе, если (
    previousKeyType === 'оператор' ||
    previousKeyType === 'вычислить'
  ) {
    display.textContent = '0'.
  }
  
  Calculator.dataset.previousKeyType = 'десятичный'
}  

Как и раньше, мы хотим переместить все, что изменяет display.textContent на createResultString .

  const createResultString = () => {
  // ...
  
  if (action === 'decimal') {
    если (! отображаетсяНум.включает('.')) {
      return = displayNum + '.'
    } else if (previousKeyType === 'operator' || previousKeyType === 'вычислить') {
      return = '0'.
    }
  }
}  

Поскольку мы хотим вернуть все значения, мы можем преобразовать операторы else if в ранний возврат.

  const createResultString = () => {
  // ...
  
  if (action === 'decimal') {
    if (! DisplayNum.includes ('.')) вернуть DisplayNum + '.'
    if (previousKeyType === 'operator' || previousKeyType === 'calculate') return '0.'
  }
}  

Распространенной ошибкой здесь является то, что забывают вернуть текущий отображаемый номер, если ни одно из условий не соответствует. Нам это нужно, потому что мы заменим display.textContent значением, возвращенным из createResultString . Если мы его пропустили, createResultString вернет undefined , чего мы не хотим.

  const createResultString = () => {
  // ...
  
  if (action === 'decimal') {
    если (! отображаетсяНум.включает ('.')) return displayNum + '.'
    if (previousKeyType === 'operator' || previousKeyType === 'calculate') вернет '0.'
    возврат отображаетсяNum
  }
}  

Как всегда, обратите внимание на необходимые переменные. На этом этапе требуемые переменные остаются такими же, как и раньше:

  const createResultString = () => {
  // Необходимые переменные:
  // 1. keyContent
  // 2. displayNum
  // 3. previousKeyType
  // 4. действие
}  

Создание строки результата для клавиш оператора

Вот код, который мы написали для клавиш оператора.

  если (
  действие === 'добавить' ||
  действие === 'вычитание' ||
  действие === 'умножить' ||
  действие === 'разделить'
) {
  const firstValue = Calculator.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  const secondValue = displayNum
  
  если (
    firstValue &&
    оператор &&
    previousKeyType! == 'оператор' &&
    previousKeyType! == 'вычислить'
  ) {
    const calcValue = вычислить (firstValue, оператор, secondValue)
    display.textContent = calcValue
    калькулятор.dataset.firstValue = calcValue
  } еще {
    Calculator.dataset.firstValue = displayNum
  }
  
  key.classList.add ('не работает')
  Calculator.dataset.previousKeyType = 'оператор'
  Calculator.dataset.operator = действие
}  

Вы уже знакомы с подробностями: мы хотим переместить все, что изменяет display.textContent в createResultString . Вот что нужно переместить:

  const createResultString = () => {
  // ...
  если (
    действие === 'добавить' ||
    действие === 'вычитание' ||
    действие === 'умножить' ||
    действие === 'разделить'
  ) {
    const firstValue = калькулятор.dataset.firstValue
    Оператор const = Calculator.dataset.operator
    const secondValue = displayNum
    
    если (
      firstValue &&
      оператор &&
      previousKeyType! == 'оператор' &&
      previousKeyType! == 'вычислить'
    ) {
      вернуть вычислить (firstValue, оператор, secondValue)
    }
  }
}  

Помните, createResultString необходимо вернуть значение, которое будет отображаться на калькуляторе. Если условие if не соответствует, мы все равно хотим вернуть отображаемое число.

  const createResultString = () => {
  // ...
  если (
    действие === 'добавить' ||
    действие === 'вычитание' ||
    действие === 'умножить' ||
    действие === 'разделить'
  ) {
    const firstValue = Calculator.dataset.firstValue
    Оператор const = Calculator.dataset.operator
    const secondValue = displayNum
    
    если (
      firstValue &&
      оператор &&
      previousKeyType! == 'оператор' &&
      previousKeyType! == 'вычислить'
    ) {
      вернуть вычислить (firstValue, оператор, secondValue)
    } еще {
      возврат отображаетсяNum
    }
  }
}  

Затем мы можем преобразовать оператор if / else в тернарный оператор:

  const createResultString = () => {
  //...
  если (
    действие === 'добавить' ||
    действие === 'вычитание' ||
    действие === 'умножить' ||
    действие === 'разделить'
  ) {
    const firstValue = Calculator.dataset.firstValue
    Оператор const = Calculator.dataset.operator
    const secondValue = displayNum
    
    вернуть firstValue &&
      оператор &&
      previousKeyType! == 'оператор' &&
      previousKeyType! == 'вычислить'
      ? вычислить (первое значение, оператор, второе значение)
      : DisplayNum
  }
}  

Если вы присмотритесь, то поймете, что нет необходимости хранить переменную secondValue .Мы можем использовать displayNum непосредственно в функции calculate .

  const createResultString = () => {
  // ...
  если (
    действие === 'добавить' ||
    действие === 'вычитание' ||
    действие === 'умножить' ||
    действие === 'разделить'
  ) {
    const firstValue = Calculator.dataset.firstValue
    Оператор const = Calculator.dataset.operator
    
    вернуть firstValue &&
      оператор &&
      previousKeyType! == 'оператор' &&
      previousKeyType! == 'вычислить'
      ? вычислить (firstValue, оператор, displayNum)
      : DisplayNum
  }
}  

Наконец, обратите внимание на необходимые переменные и свойства.На этот раз нам понадобятся Calculator.dataset.firstValue и Calculator.dataset.operator .

  const createResultString = () => {
  // Необходимые переменные и свойства:
  // 1. keyContent
  // 2. displayNum
  // 3. previousKeyType
  // 4. действие
  // 5. Calculator.dataset.firstValue
  // 6. Calculator.dataset.operator
}  

Создание строки результата для ключа очистки

Мы написали следующий код для обработки ключа очистки .

  if (action === 'clear') {
  if (key.textContent === 'AC') {
    Calculator.dataset.firstValue = ''
    Calculator.dataset.modValue = ''
    Calculator.dataset.operator = ''
    Calculator.dataset.previousKeyType = ''
  } еще {
    key.textContent = 'AC'
  }
  
  display.textContent = 0
  Calculator.dataset.previousKeyType = 'очистить'
}  

Как и выше, вы хотите переместить все, что изменяет display.textContent в createResultString .

  const createResultString = () => {
  //...
  если (действие === 'очистить') вернуть 0
}  

Создание строки результата для ключа равенства

Вот код, который мы написали для ключа равенства:

  if (action === 'calculate') {
  пусть firstValue = Calculator.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  пусть secondValue = отображаетсяNum
  
  if (firstValue) {
    if (previousKeyType === 'вычислить') {
      firstValue = displayNum
      secondValue = Calculator.dataset.modValue
    }
    
    отображать.textContent = вычислить (firstValue, оператор, secondValue)
  }
  
  Calculator.dataset.modValue = secondValue
  Calculator.dataset.previousKeyType = 'вычислить'
}  

Как и выше, мы хотим скопировать все, что изменяет display.textContent , в createResultString . Вот что нужно скопировать:

  if (action === 'calculate') {
  пусть firstValue = Calculator.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  пусть secondValue = отображаетсяNum
  
  if (firstValue) {
    if (previousKeyType === 'вычислить') {
      firstValue = displayNum
      secondValue = калькулятор.dataset.modValue
    }
    display.textContent = вычислить (firstValue, оператор, secondValue)
  }
}  

При копировании кода в createResultString убедитесь, что вы возвращаете значения для всех возможных сценариев:

  const createResultString = () => {
  // ...
  
  if (action === 'вычислить') {
    пусть firstValue = Calculator.dataset.firstValue
    Оператор const = Calculator.dataset.operator
    пусть secondValue = отображаетсяNum
    
    if (firstValue) {
      if (previousKeyType === 'вычислить') {
        firstValue = displayNum
        secondValue = калькулятор.dataset.modValue
      }
      вернуть вычислить (firstValue, оператор, secondValue)
    } еще {
      возврат отображаетсяNum
    }
  }
}  

Далее мы хотим уменьшить количество повторных назначений. Мы можем сделать это, передав правильные значения в calculate через тернарный оператор.

  const createResultString = () => {
  // ...
  
  if (action === 'вычислить') {
    const firstValue = Calculator.dataset.firstValue
    Оператор const = Calculator.dataset.operator
    const modValue = калькулятор.dataset.modValue
    
    if (firstValue) {
      вернуть предыдущийKeyType === 'вычислить'
        ? вычислить (отображается число, оператор, modValue)
        : вычислить (firstValue, оператор, displayNum)
    } еще {
      возврат отображаетсяNum
    }
  }
}  

Вы можете еще больше упростить приведенный выше код с помощью другого тернарного оператора, если вам это удобно:

  const createResultString = () => {
  // ...
  
  if (action === 'вычислить') {
    const firstValue = калькулятор.dataset.firstValue
    Оператор const = Calculator.dataset.operator
    const modValue = Calculator.dataset.modValue
    
    вернуть firstValue
      ? previousKeyType === 'вычислить'
        ? вычислить (отображается число, оператор, modValue)
        : вычислить (firstValue, оператор, displayNum)
      : DisplayNum
  }
}  

На этом этапе мы хотим снова обратить внимание на требуемые свойства и переменные:

  const createResultString = () => {
  // Необходимые переменные и свойства:
  // 1.keyContent
  // 2. displayNum
  // 3. previousKeyType
  // 4. действие
  // 5. Calculator.dataset.firstValue
  // 6. Calculator.dataset.operator
  // 7. Calculator.dataset.modValue
}  

Передача необходимых переменных

Нам нужно семь свойств / переменных в createResultString :

  1. keyContent
  2. displayNum
  3. previousKeyType
  4. action
  5. firstValue modValue
  6. operator

Мы можем получить keyContent и action из key .Мы также можем получить firstValue , modValue , operator и previousKeyType из набора данных калькулятора .

Это означает, что для функции createResultString требуются три переменные: ключ , отображаемый номер Num и набор данных калькулятора . Поскольку Calculator.dataset представляет состояние калькулятора, давайте вместо этого будем использовать переменную с именем state .

  const createResultString = (ключ, отображаемое число, состояние) => {
  const keyContent = ключ.textContent
  const действие = key.dataset.action
  const firstValue = state.firstValue
  const modValue = state.modValue
  const оператор = состояние. оператор
  const previousKeyType = state.previousKeyType
  // ... Рефакторинг по мере необходимости
}

// Использование createResultString
keys.addEventListener ('клик', e => {
  если (e.target.matches ('button')) return
  const displayNum = display.textContent
  const resultString = createResultString (e.target, displayNum, Calculator.dataset)
  
  // ...
})  

Не стесняйтесь деструктурировать переменные, если хотите:

  const createResultString = (key, displayNum, state) => {
  const keyContent = ключ.textContent
  const {действие} = key.dataset
  const {
    firstValue,
    modValue,
    оператор
    previousKeyType
  } = состояние
  
  // ...
}  

Согласованность внутри операторов if

В createResultString мы использовали следующие условия для проверки типа нажатых клавиш:

  // Если ключ - это число
если (! действие) {/ * ... * /}

// Если ключ десятичный
if (действие === 'десятичное') {/ * ... * /}

// Если ключ - оператор
если (
  действие === 'добавить' ||
  действие === 'вычитание' ||
  действие === 'умножить' ||
  действие === 'разделить'
) {/ *... * /}

// Если ключ очищен
if (action === 'clear') {/ * ... * /}

// Если ключ вычислен
if (action === 'calculate') {/ * ... * /}  

Они непоследовательны, поэтому их трудно читать. Если возможно, мы хотим сделать их согласованными, чтобы написать что-то вроде этого:

  if (keyType === 'number') {/ * ... * /}
if (keyType === 'десятичный') {/ * ... * /}
if (keyType === 'оператор') {/ * ... * /}
if (keyType === 'clear') {/ * ... * /}
if (keyType === 'calculate') {/ * ... * /}  

Для этого мы можем создать функцию с именем getKeyType .Эта функция должна возвращать тип нажатой клавиши.

  const getKeyType = (ключ) => {
  const {действие} = key.dataset
  если (! действие) вернет "число"
  если (
    действие === 'добавить' ||
    действие === 'вычитание' ||
    действие === 'умножить' ||
    действие === 'разделить'
  ) return 'оператор'
  // Для всего остального вернуть действие
  обратное действие
}  

Вот как вы будете использовать эту функцию:

  const createResultString = (key, displayNum, state) => {
  const keyType = getKeyType (ключ)
  
  if (keyType === 'число') {/ *... * /}
  if (keyType === 'десятичный') {/ * ... * /}
  if (keyType === 'оператор') {/ * ... * /}
  if (keyType === 'clear') {/ * ... * /}
  if (keyType === 'вычислить') {/ * ... * /}
}  

Мы закончили с createResultString . Перейдем к updateCalculatorState .

Создание updateCalculatorState

updateCalculatorState - это функция, которая изменяет внешний вид калькулятора и настраиваемые атрибуты.

Как и в случае с createResultString , нам нужно проверить тип нажатой клавиши.Здесь мы можем повторно использовать getKeyType .

  const updateCalculatorState = (ключ) => {
  const keyType = getKeyType (ключ)
  
  if (keyType === 'число') {/ * ... * /}
  if (keyType === 'десятичный') {/ * ... * /}
  if (keyType === 'оператор') {/ * ... * /}
  if (keyType === 'clear') {/ * ... * /}
  if (keyType === 'вычислить') {/ * ... * /}
}  

Если вы посмотрите на оставшийся код, вы можете заметить, что мы изменили data-previous-key-type для каждого типа ключа.Вот как выглядит код:

  const updateCalculatorState = (ключ, калькулятор) => {
  const keyType = getKeyType (ключ)
  
  if (! action) {
    // ...
    Calculator.dataset.previousKeyType = 'число'
  }
  
  if (action === 'decimal') {
    // ...
    Calculator.dataset.previousKeyType = 'десятичный'
  }
  
  если (
    действие === 'добавить' ||
    действие === 'вычитание' ||
    действие === 'умножить' ||
    действие === 'разделить'
  ) {
    // ...
    Calculator.dataset.previousKeyType = 'оператор'
  }
  
  if (action === 'clear') {
    //...
    Calculator.dataset.previousKeyType = 'очистить'
  }
  
  if (action === 'вычислить') {
    Calculator.dataset.previousKeyType = 'вычислить'
  }
}  

Это избыточно, потому что мы уже знаем тип ключа с помощью getKeyType . Мы можем выполнить рефакторинг приведенного выше кода:

  const updateCalculatorState = (key, Calculator) => {
  const keyType = getKeyType (ключ)
  Calculator.dataset.previousKeyType = keyType
    
  if (keyType === 'число') {/ * ... * /}
  if (keyType === 'decimal') {/ *... * /}
  if (keyType === 'оператор') {/ * ... * /}
  if (keyType === 'clear') {/ * ... * /}
  if (keyType === 'вычислить') {/ * ... * /}
}  

Создание

updateCalculatorState для клавиш оператора

Визуально нам нужно убедиться, что все клавиши выходят из своего нажатого состояния. Здесь мы можем скопировать и вставить код, который у нас был раньше:

  const updateCalculatorState = (ключ, калькулятор) => {
  const keyType = getKeyType (ключ)
  Calculator.dataset.previousKeyType = keyType
  
  Множество.from (key.parentNode.children) .forEach (k => k.classList.remove ('находится в депрессии'))
}  

Вот что осталось от того, что мы написали для клавиш оператора, после перемещения частей, связанных с display.textContent в createResultString .

  if (keyType === 'operator') {
  если (firstValue &&
      оператор &&
      previousKeyType! == 'оператор' &&
      previousKeyType! == 'вычислить'
  ) {
    Calculator.dataset.firstValue = CalculatorValue
  } еще {
    калькулятор.dataset.firstValue = displayNum
  }
  
  key.classList.add ('не работает')
  Calculator.dataset.operator = key.dataset.action
}  

Вы можете заметить, что мы можем сократить код с помощью тернарного оператора:

  if (keyType === 'operator') {
  key.classList.add ('не работает')
  Calculator.dataset.operator = key.dataset.action
  Calculator.dataset.firstValue = firstValue &&
    оператор &&
    previousKeyType! == 'оператор' &&
    previousKeyType! == 'вычислить'
    ? CalculatedValue
    : DisplayNum
}  

Как и раньше, обратите внимание на необходимые переменные и свойства.Здесь нам нужно CalculatedValue и отображаемое Num .

  const updateCalculatorState = (ключ, калькулятор) => {
  // Необходимые переменные и свойства
  // 1. ключ
  // 2. калькулятор
  // 3. CalculatedValue
  // 4. displayNum
}  

Создание

updateCalculatorState для ключа очистки

Вот оставшийся код для ключа очистки:

  if (action === 'clear') {
  if (key.textContent === 'AC') {
    калькулятор.dataset.firstValue = ''
    Calculator.dataset.modValue = ''
    Calculator.dataset.operator = ''
    Calculator.dataset.previousKeyType = ''
  } еще {
    key.textContent = 'AC'
  }
}

if (action! == 'clear') {
  const clearButton = Calculator.querySelector ('[data-action = clear]')
  clearButton.textContent = 'CE'
}  

Здесь нет ничего, что можно было бы реорганизовать. Не стесняйтесь копировать / вставлять все в updateCalculatorState .

Создание

updateCalculatorState для ключа равенства

Вот код, который мы написали для ключа равенства:

  if (action === 'calculate') {
  пусть firstValue = калькулятор.dataset.firstValue
  Оператор const = Calculator.dataset.operator
  пусть secondValue = отображаетсяNum
  
  if (firstValue) {
    if (previousKeyType === 'вычислить') {
      firstValue = displayNum
      secondValue = Calculator.dataset.modValue
    }
    
    display.textContent = вычислить (firstValue, оператор, secondValue)
  }
  
  Calculator.dataset.modValue = secondValue
  Calculator.dataset.previousKeyType = 'вычислить'
}  

Вот что у нас останется, если мы удалим все, что касается дисплея .textContent .

  if (action === 'вычислить') {
  пусть secondValue = отображаетсяNum
  
  if (firstValue) {
    if (previousKeyType === 'вычислить') {
      secondValue = Calculator.dataset.modValue
    }
  }
  
  Calculator.dataset.modValue = secondValue
}  

Мы можем преобразовать это в следующее:

  if (keyType === 'calculate') {
  Calculator.dataset.modValue = firstValue && previousKeyType === 'вычислить'
    ? modValue
    : DisplayNum
}  

Как всегда, обратите внимание на используемые свойства и переменные:

  const updateCalculatorState = (key, Calculator) => {
  // Необходимые переменные и свойства
  // 1.ключ
  // 2. калькулятор
  // 3. CalculatedValue
  // 4. displayNum
  // 5. modValue
}  

Передача необходимых переменных

Мы знаем, что нам нужны пять переменных / свойств для updateCalculatorState :

  1. ключ
  2. Calculator
  3. CalculatorValue
  4. displayNum
  5. modValue

Начиная с , modValue можно получить из калькулятора .набор данных , нам нужно передать только четыре значения:

  const updateCalculatorState = (ключ, калькулятор, вычисленное значение, отображаемое число) => {
  // ...
}

keys.addEventListener ('клик', e => {
  если (e.target.matches ('button')) return
  
  константный ключ = e.target
  const displayNum = display.textContent
  const resultString = createResultString (ключ, отображаемое число, набор данных калькулятора)
  
  display.textContent = resultString
  
  // Передаем необходимые значения
  updateCalculatorState (ключ, калькулятор, resultString, displayNum)
})  

Рефакторинг updateCalculatorState снова

Мы изменили три вида значений в калькуляторе updateCalculatorState :

  1. .набор данных
  2. Класс для нажатия / нажатия операторов
  3. AC vs CE text

Если вы хотите сделать его более чистым, вы можете разделить (2) и (3) на другую функцию - updateVisualState . Вот как может выглядеть updateVisualState :

  const updateVisualState = (ключ, калькулятор) => {
  const keyType = getKeyType (ключ)
  Array.from (key.parentNode.children) .forEach (k => k.classList.remove ('находится в депрессии'))
  
  if (keyType === 'operator') ключ.classList.add ('в депрессии')
  
  if (keyType === 'clear' && key.textContent! == 'AC') {
    key.textContent = 'AC'
  }
  
  if (keyType! == 'clear') {
    const clearButton = Calculator.querySelector ('[data-action = clear]')
    clearButton.textContent = 'CE'
  }
}  

Завершение

После рефакторинга код стал намного чище. Если вы посмотрите в прослушиватель событий, вы узнаете, что делает каждая функция. Вот как выглядит прослушиватель событий в конце:

  ключей.addEventListener ('клик', e => {
  если (e.target.matches ('button')) return
  константный ключ = e.target
  const displayNum = display.textContent
  
  // Чистые функции
  const resultString = createResultString (ключ, отображаемое число, набор данных калькулятора)
  
  // Обновить состояния
  display.textContent = resultString
  updateCalculatorState (ключ, калькулятор, resultString, displayNum)
  updateVisualState (ключ, калькулятор)
})  

Вы можете получить исходный код для части рефакторинга по этой ссылке (прокрутите вниз и введите свой адрес электронной почты в поле, и я отправлю исходные коды прямо в ваш почтовый ящик).

Надеюсь, вам понравилась эта статья. Если да, возможно, вам понравится Learn JavaScript - курс, в котором я покажу вам, как построить 20 компонентов, шаг за шагом, подобно тому, как мы создали этот калькулятор сегодня.

Примечание: мы можем улучшить калькулятор, добавив поддержку клавиатуры и специальные возможности, такие как живые регионы. Хотите узнать как? Пойдите, проверьте Learn JavaScript 🙂

Calculator Builder - Плагины электронной коммерции для интернет-магазинов - Shopify App Store

Привлекайте посетителей вашего сайта и повышайте процент оплаты с помощью привлекательного интерактивного калькулятора.Если вы хотите упростить процесс расчета индивидуальных цен, скидок, точного количества необходимого продукта, площади в квадратных футах и ​​многого другого, Calculator Builder от Calconic поможет вам создать собственный калькулятор, который легко интегрировать в ваш магазин Shopify.

Для создания собственного калькулятора не требуется никакого предварительного опыта программирования. Редактор перетаскивания нашего Calculator Builder разработан так, чтобы быть максимально удобным для пользователя. И хотя для создания настраиваемого калькулятора с нуля требуется всего несколько щелчков мышью, у нас также есть набор шаблонов, которые вы можете использовать для создания желаемого калькулятора еще быстрее или черпать вдохновение для новых применений калькулятора.

Позвольте вашим клиентам подсчитать, сколько вашего продукта им нужно

Если вы продаете плитку, обои, напольные покрытия или другие товары, которые обычно продаются в нескольких экземплярах, встроенный калькулятор позволяет покупателям очень удобно рассчитать точное количество, сколько определенного продукта им нужно заказать. Точно так же, если вы продаете товары в единицах измерения (квадратный фут, кубический ярд и т. Д.), Калькулятор позволяет покупателям рассчитать необходимое количество единиц, а также окончательную цену.

Предоставьте клиентам возможность персонализировать ваш продукт с помощью калькулятора индивидуальных цен

Если вы продаете настраиваемые продукты с динамической / настраиваемой ценой, которая зависит от выбора клиентов, калькуляторы CALCONIC_ чрезвычайно полезны. Просто создайте и добавьте свой индивидуальный калькулятор цен для вашего продукта со всеми опциями, входными данными или даже условиями, необходимыми для расчета окончательной цены. И ваш покупатель сможет добавить свой индивидуальный продукт с рассчитанной ценой в корзину.Более того, он также будет видеть все свои варианты выбора в корзине.

Покажите ценность вашего продукта

Хорошее содержание веб-сайта помогает увеличить продажи; интересный контент делает его еще лучше. Дайте вашим клиентам возможность самостоятельно оценить ценность ваших продуктов с помощью интерактивного и увлекательного калькулятора. В конце концов, увидеть - значит поверить, поэтому позвольте посетителям вашего магазина подсчитать ценность, которую они получают, покупая ваши товары. Поскольку они делают это сами, они будут больше доверять этому.

Увеличение продаж

Ориентация на посетителей, которые не решаются совершить покупку, позволяя им вычислять числа и самостоятельно рассчитывать ценность, поможет превратить их в клиентов. В этом смысле один интерактивный калькулятор может быть более убедительным и ценным, чем подробные описания продуктов и отзывы клиентов. ⠀

Начни сейчас!

Добавить калькулятор на ваш сайт очень просто. Просто добавьте его в описание продукта, вставьте в шаблон магазина или покажите посетителям в виде всплывающего окна.

Оценщик и калькулятор террасной доски

Когда каркас вашего настила построен, одним из последних шагов является покрытие каркаса настилом. В зависимости от того, какой готовый вид вы хотите получить, вам нужно будет определить, сколько материала вам понадобится для выполнения ваших планов по дизайну колоды.

Воспользуйтесь нашей программой оценки настила настила, чтобы узнать, сколько материала вам понадобится для завершения вашего проекта. Ваши результаты покажут вам:

  • Количество досок (по длине) необходимое
  • Необходимое количество плит (с учетом коэффициента отходов)
  • Необходимое количество саморезов и скрытых креплений

Когда вы узнаете, сколько материала вам понадобится, воспользуйтесь нашим калькулятором цен, чтобы определить стоимость материалов, в зависимости от того, планируете ли вы использовать конкретную породу дерева, композит или другой тип материала (например, Полы ПВХ).

Сколько десктопных досок мне нужно?

Выбор досок для изготовления настила палубы - это одна часть эстетики и одна часть механики. Помимо выбора типа дерева или композитных материалов для настила, вам также необходимо знать, сколько досок и какого размера вам понадобится для создания настила для настила.

Есть несколько факторов, которые определяют, сколько досок вам понадобится для формирования пола:

  • Размер вашей колоды, который может быть определен одним из следующих способов:
    • Площадь общая
    • Длина x Ширина в футах и ​​дюймах (общая длина периметра вашей деки)
  • Размер платы
  • Угол вашего настила
    • 90 ° к балке (обеспечивает горизонтальный прямой вид)
    • 45 ° к балке (придает доскам пола диагональный наклонный вид)
      • Примечание: этот стиль добавит еще от 10% до 15% отходов сверх обычных отходов.
    • Шеврон, елочка, вставки или другие более сложные узоры для настила палубы потребуют больше материалов и могут стоить больше с точки зрения рабочей силы и материалов. Вы также захотите добавить 10-15% дополнительных отходов сверх обычных отходов.

Как построить инвестиционный калькулятор | Интерактивный калькулятор

Блог

Outgrow »Блоги с инструкциями» Как построить инвестиционный калькулятор?

Как построить инвестиционный калькулятор?

Как построить инвестиционный калькулятор?

16 апреля 2018 Адитья Читать 4 мин Вот калькулятор вложений.Прежде чем продолжить чтение, мы хотели бы, чтобы вы однажды воспользовались калькулятором. Сделанный? Теперь мы все можем согласиться в одном. Мы все хотим уйти на пенсию с глубокими карманами, или, говоря более прямо, финансовая независимость - это свет, который мы ищем в конце туннеля. И дорога к финансовой независимости вымощена блоками инвестиций. Инвестиции - те, кто больше всего говорят об этом, делают это меньше всего. Теперь, для ваших пользователей, которые окунулись в инвестиционные воды в попытке плавать к финансовой независимости, вы должны внести свой вклад и помочь им понять различные элементы, которые необходимы, чтобы поразить волшебную фигуру с помощью калькулятора.Он может показать вашим клиентам, как их первоначальные вложения, частота взносов и терпимость к риску могут повлиять на рост их денег. Мы расскажем, как создать его в Outgrow. Outgrow позволяет создавать широкий спектр калькуляторов со сложными формулами и логическими утверждениями. Здесь мы рассмотрим этапы создания инвестиционного калькулятора. Формула здесь - Уравнение 1 Дивидендная доходность S&P 500 + около 4,5% = ожидаемая долгосрочная доходность акций Уравнение 2 А 1.Коэффициент расходов 5% = m или более 40% ваших денег через 40 лет E предложение 3 Чистая прибыль / акционерный капитал = рентабельность капитала Примечание : Вы можете найти более подробную информацию о расчетах здесь. Теперь, когда мы знаем формулу, давайте разберемся, как создать инвестиционный калькулятор с помощью Outgrow.

Пошаговый процесс построения калькулятора инвестиций: Для начала вам понадобятся следующие данные от пользователей Q1 - Начальный баланс Q2 - Годовой взнос Q3 - Текущий возраст Q4 - Возраст выхода на пенсию Q5 - Ожидаемая доходность Q6 - Предельная налоговая ставка 1.Как и в любом интерактивном режиме, вам нужно начать с , добавив вопросы . Вы можете сделать это, войдя в приложение Outgrow и войдя в конструктор. В конструкторе вы можете добавлять вопросы на левой панели с помощью текстового редактора на правой панели. 2. Когда вы закончите с вопросами, пора определить методы ввода для каждого вопроса в калькуляторе. Вы можете выбирать между текстовым вводом, раскрывающимся списком, множественным выбором, одиночным выбором, шкалой мнений, рейтингом и числовым ползунком.R3) -1) (1 + R2)) R2 - Q5 / 100 R3 - Q4-Q3 R4 - Q2 * R3 Здесь R1 - . При выходе на пенсию ваш баланс IRA может быть равен R4, что составляет общих взносов. R3 и R4 используются только для целей расчета, и их значения также могут использоваться непосредственно в формуле. Вы можете скопировать и вставить его в построитель формул . Посмотрите на это в действии на скриншоте ниже. Примечание: Вы также можете использовать JSON для импорта формул в конструктор.

Все дороги ведут в Рим: Конечно, речь идет о лидогенерации.Теперь вы знаете, где разместить форму лидогенерации (подсказка: она находится до результатов). Продолжение с того места, где мы остановились ранее, делает вашу страницу результатов более полезной с диаграммами, изображениями или видео. Эти дополнения увеличивают общее впечатление и делают его более разнообразным. Двигаясь дальше, вы можете воспользоваться возможностью получения уведомления по электронной почте, когда пользователь предоставит свою контактную информацию. Это также работает наоборот; вы можете отправить электронное письмо своему пользователю, направляя его к дополнительным ресурсам, как только вы получите его контактную информацию.Что дальше, когда вы собрали потенциальных клиентов? Благодаря встроенным и нативным интеграциям направляйте своих потенциальных клиентов дальше по воронке с помощью заранее установленных рабочих процессов на Zapier, MailChimp et al. Для приложений без встроенной интеграции используйте веб-хуки. Все это можно найти здесь Configure> Integrations. Что ж, это накрутка с нашей стороны. Создайте калькулятор и не забудьте разместить ссылку в комментариях. Вы также можете изучить наш контрольный список продвижения, чтобы узнать о различных способах продвижения вашего калькулятора. Дополнительный ресурс : 9 рекомендаций по продвижению вашего калькулятора Вам нужна помощь в создании собственного сложного калькулятора? Свяжитесь с нами с помощью красной кнопки чата в правом нижнем углу. Или начните с нашего курса о том, как увеличить лидогенерацию с помощью калькуляторов.

Адитья занимается поисковой оптимизацией и иногда пишет контент в Outgrow. Когда он не делает ни того, ни другого, можно увидеть, как он горит за углами местной трассы для катания на горных велосипедах и собирает КОМ на Страве.

Инструмент калькулятора цен на сайте

| MayeCreate Design

FAQ

Что мне нужно, чтобы получить точную оценку с помощью калькулятора?

Вам нужно будет приблизительно знать, сколько страниц вы хотите на своем веб-сайте, а также иметь хорошее представление о том, что вы хотите от него делать.

Как вы вообще получили эти числа?

С момента основания MayeCreate в 2005 году мы разработали более 400 веб-сайтов. После создания каждого завершенного сайта мы проверяем, сколько времени нам потребовалось на выполнение работы. Цифры, используемые в этом приложении, представляют собой среднее количество времени, которое требуется нашей компании, специализированному веб-агентству Среднего Запада, для заполнения сайта, который вы запрашиваете в форме.

Сколько времени это займет?

Может, минут 5? Меньше, если вы знаете, чего хотите, и больше, если вам нужно время, чтобы продумать вопросы по ходу дела.Если вы не уверены, просто пролистайте шаги и посмотрите, сколько времени, по вашему мнению, вам понадобится.

Будет ли эта вещь действительно давать мне цену или она просто предоставит мою информацию кучке продажных стервятников?

Да. Подожди, нет. Сделать больше. Да, он действительно даст вам цитату. Нет, в MayeCreate нет продавцов-падальщиков. Давайте будем реальными, мы создаем веб-сайты, поэтому мы всегда ищем достойный внимания проект, которым стоит заняться. Поэтому мы можем изучить ваше предложение, чтобы определить, есть ли у вас какашки в группе и можете ли вы получить пользу от наших услуг.Всего кексов беспокоиться не стоит. Мы не кекс, мы кексы.

Нужно ли мне жертвовать своим первенцем, чтобы получить этот калькулятор?

Жертвовать детьми - это Ветхий Завет. Если вы хотите получить полный отчет в конце, вам нужно будет указать свое имя и адрес электронной почты на последнем шаге формы. Если вам не нужен полный отчет, просто возьмите итоговую сумму на предпоследнем шаге, это ваша приблизительная сумма, решать вам.

Используйте или создайте красивые калькуляторы форм бесплатно на Calc2web.com

Создавайте калькуляторы онлайн и используйте веб-инструменты бесплатно с помощью нашего онлайн-генератора калькуляторов

В Интернете доступно множество инструментов расчета . Вы можете найти онлайн-калькуляторы по широкому кругу вопросов.

Тем не менее, переменные и методы расчета жестко предопределены и не допускают какой-либо гибкости и не обеспечивают возможность регистрации либо анализировать расчеты, либо интегрировать их в собственный веб-сайт.

Преимущества нашего калькулятора форм

Здесь на помощь приходит Calc2Web: после регистрации организуйте свой личный онлайн-калькулятор именно так, как вам нужно. У вас будет не только возможность использовать столько арифметических вычислений, сколько захотите, но вы также сможете создавать формулы индивидуально и без каких-либо навыки программирования.

Взгляните на наш следующий полезный видеоурок о том, как создать калькулятор для вашей домашней страницы.

Преобразование расчетов форм в гибкий Javascript / HTML и создание собственного бесплатного инструмента расчета

Завершив работу с калькулятором, вы можете сгенерировать свой HTML-код (с помощью Javascript или Iframe), который вы можете напрямую включить в свой веб-сайт, чтобы ваши посетителям пользоваться созданным вами бесплатным калькулятором. Это повысит привлекательность вашей домашней страницы, увеличит количество посетителей, а также больше трафика и дополнительно прибыль от трафика, генерируемого этой стороной.Кстати, калькуляторы форм увеличат время пребывания ваших пользователей и это улучшит ваш веб-рейтинг (результаты SEO). Для пакетов PREMIUM вы также можете использовать калькуляторы форм в качестве собственного HTML-содержимого (прямые исходные коды HTML, а не как решение iframe).

В качестве альтернативы мы создаем профессиональную и качественную версию вашего бизнес-калькулятора

Поручите нам создать идеальный калькулятор для вашего бизнеса в соответствии с вашими требованиями.Мы отлично справимся с вашими последними операциями с электронными таблицами Excel. На более позднем этапе результаты также могут быть представлены в виде элегантно подготовленных кривые диаграммы на вашем сайте.

Если вы хотите использовать веб-инструмент только на своем веб-сайте , просто установите статус расчета частный (вместо общедоступного). Однако в этом случае вы не получите бесплатного трафика через наш сайт.

Конечно, мы также будем рады создать профессиональный калькулятор бизнес-форм для вашего сайта на Javascript / jQuery / PHP, а также плагин или модуль для различных систем управления контентом, таких как WordPress, Typo3, Drupal, Joomla и т. д.Просто свяжитесь с нами, чтобы запросить индивидуальное предложение.

Получите гибкий инструмент расчета в свободной форме для своего веб-сайта

Ищете ли вы калькулятор для определения потребности в краске фасада, необходимой для нового здания, для определения размера отопительного котла, для расчета цен или мощности фотоэлектрической установки.

Добавить комментарий

Ваш адрес email не будет опубликован.