Содержание

Разработка онлайн калькулятора для сайта

 

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

 

Строительство — не единственный пример. Его можно применить к любой сфере:

  • кредиты и ипотека;
  • страхование;
  • бухгалтерское обслуживание и налоги;
  • калории;
  • оптовая цена бензина;
  • калькулятор размера одежды.

 

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

 

Преимущества для вашего бизнеса

Три причины установить онлайн-калькулятор на сайт:

Повышение эффективности SEO

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

Довольные клиенты

Большинству потребителей для принятия решения важно видеть сразу точную цену. Оперативный расчёт расходов — это удобство для ваших клиентов. А довольный клиент — постоянный клиент.

Преимущество над конкурентами

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


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

 

Стоимость разработки онлайн-калькулятора: 3 900₽*

*Стоимость может измениться в зависимости от сложности расчетов.

Пример онлайн калькулятора на создание сайта:

Как мы работаем

Заказ услуги

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

Выявление потребностей

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

Разработка логики

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

Тестирование

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

Установка на сайт

После того как вы примете работу, мы устанавливаем онлайн-калькулятор на сайт.


Почему мы?

Наши онлайн-калькуляторы — это:

  • Универсальность. Создадим что угодно на заказ — от простенького калькулятора до сложной системы с широким спектром дополнительных функций.
  • Простота. Ваши клиенты точно не заблудятся и посчитают всё в пару кликов.
  • Обратная связь. После расчёта стоимости пользователь сможет отправить вам заявку со всеми расчётами.
  • 100% безопасность. Все калькуляторы поддерживают работу с протоколом SSL. Данные ваших клиентов надёжно зашифрованы и в полной безопасности.
  • Кроссплатформенность. Калькуляторы будут работать на всех популярных системах управления контентом (Joomla, 1С Битрикс, вордпресс).
  • Адаптивность. Наши калькуляторы на 100% адаптированы под мобильные устройства. Пользователи гаджетов с сенсорными экранами будут довольны.

 

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

 

Заказать разработку онлайн-калькулятора

Оставьте заявку, и наш менеджер свяжется с вами для уточнения деталей.

 

 

зачем нужны онлайн-калькуляторы и как их можно сделать?

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

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

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

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

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

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

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

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

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

Теги:

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

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

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

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

Основные преимущества платформы stepFORM:

  • она подходит для бизнес проектов разных тематик: сфера доставки (еды, цветов), услуги по ремонту/перевозке, проведение мероприятий, набор персонала и др.;
  • ее могут использовать и фрилансеры, и веб-студии;
  • в системе есть визуальный конструктор, максимально упрощающих работу пользователям;
  • имеются решения для популярных CMS либо можно интегрировать готовый HTML-код в любую веб-страницу;
  • доступны уведомления по email / sms;
  • поддерживается адаптивность;
  • есть защита от спама и некоторые другие полезные фишки (весь список ищите на их сайте).

Начало работы с конструктором

Переходим на главную страницу сервиса https://stepform.io/ и нажимаем на кнопку «Создать бесплатно». Справа появится вкладка для быстрой регистрации в несколько кликов — там вводим имя, email, пароль и потом нажимаем «Создать аккаунт».

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

  • «Создать пустую форму» — начать разработку с нуля.
  • «Создать из шаблона» — использовать уже готовую заготовку и переделывать ее под себя.

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

Под термином «квиз-калькулятора» (quiz) подразумевается специальная форма (чаще всего пошаговая), которая используется для получения заказов с сайта и включает в себя: 1) выбор разных параметров по предоставляемым вами услугам; 2) предварительный просчет их стоимости; 3) поля для отправки контактов посетителя.

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

Разработка квиз-калькулятора

В первую очередь добавим виджеты:

  • «Сообщение» — где укажем заголовок калькулятора.
  • «Выбор изображений» — тут будут картинки товаров и описания к ним (также произведем настройку самого виджета, задав ему 3 колонки).

Первая страничка нашей quiz формы готова, для создания второй страницы кликнем на «+».

На следующей странице используем те же виджеты («Сообщение» и «Выбор изображений»), только для второго выберем уже 4 колонки. Вот что у нас получится:

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

Далее создадим общую страничку с формулами, где пользователь увидит отдельную и полную стоимость заказа.

Далее добавим в форму шаг для сбора данных и оформления заказа. На этом этапе нам необходимо узнать:

  • имя/номер заказчика;
  • имя/номер получателя;
  • адрес получателя;
  • дата и время доставки.

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

  • «Текстовый ввод».
  • «Моб. телефон».
  • «Дата и время».

По итогу страница будет выглядеть так:

Осталась самая малость — подобрать дизайн. Для этого откроем панель дизайна и определим необходимые нам цвета и шрифт.

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

Теперь квиз-форма полностью готова, и мы можем ее использовать. Получившийся результат из примера доступен для просмотра по данной ссылке: https://app.stepform.io/CRnQiw0.

Интеграция формы на сайт

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

  • через Javascript код;
  • через iFrame;
  • или как Popup.

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

Итого. Если у вас в коммерческом веб-проекте еще нет квиз формы или калькулятора стоимости услуг, то самое время их добавить. Тем более, что как вы могли убедиться сами, в наше время это сделать совсем не сложно, и не требуется никаких знаний в области разработки. С помощью специальных конструкторов по типу stepFORM весь процесс создания будет простым и займет минимум времени. В конце концов, вы получите хорошую возможность увеличить конверсию площадки и сделать ее более полезной для своей ЦА. Кстати, в сервисе есть полностью бесплатный тариф для начинающих.

Простой способ собрать калькулятор для сайта на WordPress

Калькулятор — самый очевидный способ наладить сбор полностью готовых индивидуальных заявок на сайте или лендинге. Для WordPress написан не один десяток плагинов, но часть из них стоит денег, а бесплатные — обычно имеют не самый свежий дизайн и грешат ограничениями в настройках. Конечно, всегда есть вариант с «подтянуть навыки Javascript и HTML и сделать самому», но это ваше время, которое тоже стоит денег, — плюс редактирование самописного калькулятора едва ли будет самой удобной задачей на свете.

👍 Научим создавать сайты на WordPress бесплатно за 19 уроков. Подробнее →

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

За 15-30 минут здесь можно создать калькулятор для расчета любой услуги, оформить калькулятор доставки для интернет-магазина, а то и вовсе научить калькулятор считать и переводить что угодно во что угодно.

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

Настройка дизайна калькулятора

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

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

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

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

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

Настройка формулы

В разделе «Формула»в конструкторе ваш калькулятор представлен в виде схемы: у каждого поля есть своя буква-переменная. Подставляя эти переменные, а также математические знаки и цифры в строку слева, вы можете создать одну или несколько формул — последнее удобно, если нужно сделать скидку за выбор конкретных услуг или товаров.

Подключение оповещений и оплаты

Все эти опции доступны в настройках кнопки.

В пункте «Оповещение владельца» можно выбрать, какую именно информацию из заявки отправлять на почту или телефон менеджера и отметить, в каком порядке выводить поля заказа в сообщении. Чтобы добавить поле, достаточно кликнуть по нему.

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

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

Установка калькулятора на страницу сайта

Как только калькулятор готов, нажимаем кнопку «Сохранить» — и получаем готовый код калькулятора.

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

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

Внесение изменений в калькулятор, установленный на сайте

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


Уже пробовали конструктор uСalc? поделитесь своим опытом в комментариях!

Мне нравитсяНе нравится

DashaMail украл калькулятор AB-тестов и код Mindbox. Пожалуйста, не надо так

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

{«id»:196626,»url»:»https:\/\/vc.ru\/claim\/196626-dashamail-ukral-kalkulyator-ab-testov-i-kod-mindbox-pozhaluysta-ne-nado-tak»,»title»:»DashaMail \u0443\u043a\u0440\u0430\u043b \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 AB-\u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043a\u043e\u0434 Mindbox. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0430\u043a»,»services»:{«facebook»:{«url»:»https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/vc.ru\/claim\/196626-dashamail-ukral-kalkulyator-ab-testov-i-kod-mindbox-pozhaluysta-ne-nado-tak»,»short_name»:»FB»,»title»:»Facebook»,»width»:600,»height»:450},»vkontakte»:{«url»:»https:\/\/vk.com\/share.php?url=https:\/\/vc.ru\/claim\/196626-dashamail-ukral-kalkulyator-ab-testov-i-kod-mindbox-pozhaluysta-ne-nado-tak&title=DashaMail \u0443\u043a\u0440\u0430\u043b \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 AB-\u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043a\u043e\u0434 Mindbox. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0430\u043a»,»short_name»:»VK»,»title»:»\u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435″,»width»:600,»height»:450},»twitter»:{«url»:»https:\/\/twitter.com\/intent\/tweet?url=https:\/\/vc.ru\/claim\/196626-dashamail-ukral-kalkulyator-ab-testov-i-kod-mindbox-pozhaluysta-ne-nado-tak&text=DashaMail \u0443\u043a\u0440\u0430\u043b \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 AB-\u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043a\u043e\u0434 Mindbox. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0430\u043a»,»short_name»:»TW»,»title»:»Twitter»,»width»:600,»height»:450},»telegram»:{«url»:»tg:\/\/msg_url?url=https:\/\/vc.ru\/claim\/196626-dashamail-ukral-kalkulyator-ab-testov-i-kod-mindbox-pozhaluysta-ne-nado-tak&text=DashaMail \u0443\u043a\u0440\u0430\u043b \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 AB-\u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043a\u043e\u0434 Mindbox. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0430\u043a»,»short_name»:»TG»,»title»:»Telegram»,»width»:600,»height»:450},»odnoklassniki»:{«url»:»http:\/\/connect.ok.ru\/dk?st.cmd=WidgetSharePreview&service=odnoklassniki&st.shareUrl=https:\/\/vc.ru\/claim\/196626-dashamail-ukral-kalkulyator-ab-testov-i-kod-mindbox-pozhaluysta-ne-nado-tak»,»short_name»:»OK»,»title»:»\u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0438″,»width»:600,»height»:450},»email»:{«url»:»mailto:?subject=DashaMail \u0443\u043a\u0440\u0430\u043b \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 AB-\u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043a\u043e\u0434 Mindbox. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0430\u043a&body=https:\/\/vc.ru\/claim\/196626-dashamail-ukral-kalkulyator-ab-testov-i-kod-mindbox-pozhaluysta-ne-nado-tak»,»short_name»:»Email»,»title»:»\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443″,»width»:600,»height»:450}},»isFavorited»:false}

19 930 просмотров

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

Сервис email-рассылок DashaMail «позаимствовал» калькулятор AB-тестов и вдобавок использовал наш JS-клиент и API на сайте «Билайна». Сначала мы попробовали договориться с коллегами в переписке, потом отправили досудебную претензию — ответа не получили.

Mindbox — крупнейший Martech SaaS в России. Платформа автоматизации маркетинга (CDP). Объединяем в едином профиле клиента информацию с сайта, из мобильных приложений, касс розницы, рассылок.

С 2006 года помогаем «Ригле», Burger King, United Colors of Benetton и еще 400 компаниям создавать омниканальные программы лояльности; общаться с клиентами через email-рассылки, мобильные и вебпуши, чат-боты; рекомендовать релевантные товары и услуги — в письмах и на сайте. Опубликовали 157 историй успеха клиентов.

Что украл DashaMail и как обнаружили

Слева калькулятор Mindbox, справа — DashaMail: совпадают даже дефолтные цифры в ячейках

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

Мы начали изучать, а не позаимствовал ли DashaMail еще какие-нибудь наши разработки. Выяснилось: позаимствовал! На сайте «Билайна» Хром определяет в качестве источника JS-файла наш код. Этот код нужен для того, чтобы передавать данные с сайта в платформу. Сравните код Mindbox и код DashaMail.

Вероятно, копировать код понадобилось, чтобы быстрее провести интеграцию сайта с DashaMail — разработчики сервиса не стали писать код с нуля, а просто скопировали наш JS-клиент и, очевидно, серверное API.
Мы за конкуренцию, длинными контрактами не привязываем. Если клиенту лучше с конкурентом — экспортируем все данные и помогаем с переходом. Но не путем передачи нашей интеллектуальной собственности. Это перебор.

Немного технических деталей: код трекера не просто похож — оставлены даже комментарии нашего разработчика в Source Maps. Уточню на всякий случай: Source Maps (сорсмэп) — это инструмент, который позволяет посмотреть исходный код даже после того, как его сжали.

Попытка договориться

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

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

Ответа не дождались.

Чего хотим от DashaMail сейчас

Предлагаю DashaMail выполнить два условия:

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

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

  • Удалить наш код на сайте «Билайна».

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

Предыстория: зачем нужен калькулятор AB-тестов и как мы его разработали

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

Чтобы сделать статистические формулы удобными и понятными, нужно как следует разобраться и подумать. Калькулятор может быть выполнен в виде Excel-файла с формулами или визуального инструмента. Мы пошли по второму пути — в феврале этого года нашему калькулятору исполнится уже 3 года.

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

Маркетологи оценили наш калькулятор: 73 тысячи просмотров страницы с калькулятором за 2020 год, по данным Google Analytics.

Автор

Александр Горник, CEO Mindbox

uCalc – сервис для создания калькуляторов с поддержкой WordPress — WordPressify

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

Сервис uCalc для создания форм с выбором услуг

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

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

Возможности ограничиваются только вашей фантазией. Преимуществами сервиса uCalc являются:

  • Простота создания калькуляторов. Не нужно быть техническим гиком, чтобы разработать свою форму с выбором полей для заказа с сайта.
  • Удобство редактирования. Drag-n-drop интерфейс позволяет создавать формы простым перетаскиванием нужных полей.
  • Предопределенные шаблоны. Можно использовать уже существующие шаблоны, которые позволят получить готовые формы за пару щелчков мыши.
  • Быстрая интеграция с WordPress. Добавить калькулятор на WordPress-сайт можно за пару минут.

Как добавить калькулятор услуг на сайт WordPress?

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

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

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

ОСАГО онлайн 2021 — калькулятор, стоимость, покупка ОСАГО

3 причины оформить онлайн ОСАГО

  1. Быстро. Вы оформляете полис без очередей и походов в офис, он сразу приходит на электронную почту после расчета и оплаты.
  2. Удобно. Ваш полис всегда доступен в личном кабинете, на e-mail или Passbook/PassWallet на смартфоне.
  3. Надежно. Более 250 пунктов урегулирования убытков по ОСАГО на территории России готовы оказать поддержку при страховом случае.

2

Транспортное средство

  • Город собственника: Москва, Санкт-Петербург, Казань, другой.
  • Категория ТС: A — мотоциклы, B — легковые, BE — легковые, C — грузовые, другая.
  • Марка и модель автомобиля.
  • Год выпуска: 2019, 2018, 2017, другой.
  • VIN номер.
  • Мощность двигателя, л.с.
  • Период использования: 20 дней — 1 год.
  • Цель использования: личная, учебная, такси, прокат, другая.

3

Клиент

  • Фамилия, Имя, Отчество.
  • Возраст.
  • Стаж вождения.
  • Удостоверение личности.
  • Адрес по паспорту.
  • Мобильный телефон.

4

Получение полиса

  • Оформите полис еОСАГО и получите его на ваш email.
  • Доставка: не требуется, вам достаточно распечатать полученный файл.
  • Оплата: к оплате принимаются только карты VISA, MASTERCARD, MAESTRO и «МИР».

Согласно Указанию ЦБ РФ, договор еОСАГО начинает действовать не ранее чем через 3 дня после дня оформления.
Рекомендуем планировать покупку заранее, как минимум за 3 дня. Оформите онлайн сейчас.

ПАО СК «Росгосстрах», лицензия Банка России на осуществление страхования ОС № 0001 — 03, выдана 06.06.2018 г., бессрочная. Адрес центрального офиса: 121059, г.Москва, ул.Киевская, д.7. При оплате полиса онлайн комиссия не взимается.

Электронный полис ОСАГО такой же действительный, как бумажный.

Что понадобится для оформления ОСАГО

Паспорт страхователя и владельца автомобиля.
Водительские удостоверения всех допущенных водителей.
Свидетельство о регистрации ТС.
Паспорт транспортного средства (ПТС).
Действительная диагностическая карта.
Банковская карта Visa, Mastercard или «Мир».

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

Покупка электронного полиса ОСАГО состоит из 3 шагов:

Расчет

Рассчитайте стоимость в калькуляторе всего за 4 этапа. Не забывайте, что электронное ОСАГО начинает действовать через 3 дня после дня оформления.

Оплата

Вы можете купить полис ОСАГО с помощью кредитных или дебетовых карт VISA, Mastercard и «Мир».

Использование

Полис е-ОСАГО можно распечатать на принтере или предъявлять для проверки с экрана смартфона или планшета.

Остерегайтесь мошенников!

Будьте внимательны, покупайте электронное ОСАГО только на официальном сайте www.rgs.ru. Не прибегайте к помощи посредников – это незаконно! Вы рискуете приобрести недействующий или фальшивый полис ОСАГО. Проверить подлинность любого полиса ОСАГО можно на сайте РСА.

Урегулирование онлайн

Вы можете оперативно проверить статус вашего выплатного дела по полису ОСАГО или заявить о наступлении страхового случая.

Другие страховые продукты «Росгосстраха»:

Купить ОСАГО

Правила оформления

Как оформить ОСАГО онлайн?
  1. Зарегистрироваться в личном кабинете.
  2. Заполнить все данные в онлайн-калькуляторе.
  3. Получить расчет стоимости.
  4. Оплатить полис на сайте банковской картой.
  5. Получить ОСАГО и сопроводительные документы на email.
Как продлить ОСАГО?

Если Вы уже клиент Росгосстраха, имеете доступ в личный кабинет и хотите продлить полис ОСАГО, вам нужно пройти 5 простых шагов:

  1. Авторизоваться в личном кабинете.
  2. Перейти в онлайн-калькулятор ОСАГО — все нужные данные будут уже заполнены.
  3. Получить стоимость пролонгации.
  4. Оплатить ОСАГО на сайте банковской картой.
  5. Получить файл и сопроводительные документы на email.
Когда пора продлевать ОСАГО?

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

Продлить полис ОСАГО можно не ранее, чем за 2 месяца (60 дней) до истечения его срока действия.

Напоминаем, что за просроченный полис ОСАГО и за езду без полиса предусмотрен штраф.

Как проверить полис ОСАГО?

Подлинность полиса ОСАГО можно проверить на сайте РСА (Российского союза страховщиков).

Какие документы нужны для онлайн-покупки ОСАГО?

Для оформления страхового полиса вам потребуются следующие документы:

  1. Паспорт страхователя и собственника автомобиля.
  2. Свидетельство о регистрации транспортного средства (СТС) или паспорт транспортного средства (ПТС), если автомобиль не поставлен на учет..
  3. Водительские удостоверения всех допущенных к управлению водителей, если условия договора подразумевают ограниченный перечень лиц, допущенных к управлению.
  4. Действующая диагностическая карта на автомобиль, если автомобиль в соответствии с законодательством РФ проходил техосмотр.

Необходимы данные всех документов для точного расчета КБМ через автоматизированную информационную систему РСА.

Как оплатить электронное ОСАГО?

Безопасно оплатить полис можно банковской картой Visa, MasterCard, Maestro и национальной платежной картой «Мир».

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

У меня новое ТС/ Я новый водитель

Если у вас новое ТС или вы впервые в жизни оформляете ОСАГО, значит, ваших данных еще нет в системе РСА. Так как для получения полиса всем необходимо пройти эту проверку, то процедура для вас будет следующая:

  1. Вам нужно заполнить все шаги калькулятора, на Шаге 4 подтвердить корректность заполненных данных и нажать кнопку «Далее».
  2. После неуспешной проверки РСА вы увидите в том же окне форму для отправки копий ваших документов на проверку. Сделайте скан-копии или четкие фотографии всех указанных документов, добавьте их в форму и нажмите кнопку «Отправить документы на проверку». Сотрудник компании осуществит аутентификацию сведений содержащихся в сканированных копиях документов с данными указанными в калькуляторе.
  3. В течение 20 минут вам на email придет письмо с результатами проверки и специальной ссылкой на расчет и оплату. Авторизуйтесь в личном кабинете, перейдите по ссылке и оплатите полис.
    Важно! Дата оплаты не должна совпадать с датой начала действия полиса, поэтому если полис нужен уже завтра, то оплатить его надо обязательно сегодня.
Я проездил год без аварий, какую скидку я получу?

При оформлении полиса ОСАГО (в любом виде) применяется коэффициент, соответствующий страховой истории, содержащейся в автоматизированной информационной системе РСА (Российского союза автостраховщиков).

Скидки за безаварийное вождение (если информация о них содержится в РСА) будут применены. За каждый год безаварийной езды начисляется скидка 5%. Максимальный размер скидки за 10 лет страхования может составить 50%.

Нужно ли заверять печатью электронный полис? Зачем нужна электронная подпись (файл sgn)?

Электронное ОСАГО — это оригинал вашего полиса.

  1. Распечатайте файл электронного полиса на принтере и возите с собой в машине.
  2. Распечатанный полис НЕ нужно заверять печатью или подписью в офисе!
  3. Его не нужно обменивать на бумажный полис в офисе.

Вместо печати и подписи электронное ОСАГО заверяет электронная подпись, которая приходит вместе с полисом на ваш email. Файл с подписью (sgn) не нужно открывать или распечатывать, он просто хранится у вас. Дополнительная информация о подписи есть в сопроводительном письме, которое приходит с полисом.

Ответы на прочие вопросы.

Ответы на другие вопросы об ОСАГО (включая электронное ОСАГО и цену полиса) вы найдете в разделе Вопросы и ответы.

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

Что делать, если…

У меня проблемы с паролем

Если вам не приходит временный пароль либо он не подходит, проверьте папку «Спам» на своем email или повторите попытку позднее.

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

Ошибка «Неправильно выбран тип личного кабинета»

Убедитесь, что при входе в Личный кабинет вы выбираете правильный его тип: если вы представляете юридическое лицо, то над полем ввода email и пароля нужно отметить галочкой пункт «Отметьте, если вы являетесь юридическим лицом».

У меня нет с собой ПТС?

Номер и серия паспорта вашего ТС указан как в самом ПТС, так и в свидетельстве о регистрации ТС (СТС):

Уведомление «Не получено подтверждение от централизованных систем РСА»

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

  1. Убедитесь, что вы правильно заполнили все данные заявления на страхование (проверьте опечатки, даты, адреса).
  2. Если все необходимые условия оформления страховки выполняются, но вы все равно видите уведомление «Не получено подтверждение от централизованных систем РСА», воспользуйтесь специальной формой под расчетом и приложите скан-копии (четкие фотографии) документов, подтверждающие введенную вами информацию. Данные будут проверены сотрудником ПАО СК «Росгосстрах» в течение 20 минут, и вы сможете оформить договор на сайте в тот же день.
Что делать при техническом сбое?

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

Данные расчета сохраняются в браузере. Это можно отключить?

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

Желаете отключить функцию или просто очистить поля?

Отметьте, если желаете отключить функцию сохранения вводимых данных в браузере. Очистить поля
Не нахожу свою марку/модель ТС. Что делать?

Если вы не нашли в раскрывающемся списке свою марку (ни одно из представленных написаний не совпадает с наименованием марки ТС в ваших регистрационных документах), напишите в службу онлайн-поддержки (кнопка «Помощь» внизу экрана > «Задать свой вопрос» > выбрать тему обращения «Не нахожу марку своего ТС в списке» — мы добавим марку вашего ТС в список).

Если вы не нашли свою модель, внесите наименование модели в соответствии с данными регистрационных документов в поле «Отображать в полисе».

Что делать, если меня остановит ГИБДД?

Распечатайте заранее файл электронного полиса на принтере и возите с собой. Эту бумагу НЕ нужно заверять печатью или подписью — она уже заверена электронной подписью и является оригиналом полиса.

Ездить с распечатанным полисом законно! ГИБДД проверяет действительность вашего полиса по базе РСА. Вы сами тоже всегда можете проверить действительность своего полиса на сайте РСА.

Если вы беспокоитесь насчет проверок ГИБДД, то на этот случай вместе с полисом на электронную почту мы присылаем памятку со ссылками на законодательство в сфере электронного ОСАГО. Просто покажите ее сотруднику полиции.

Как создать приложение калькулятора 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 ('цифровой ключ!')
}  

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

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

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

Следуя тому же мыслительному процессу, если ключ 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 + '.'
}  

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

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

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

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

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

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

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

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

Чтобы освободить нажатое состояние, мы удаляем класс is-depressed со всех клавиш через цикл 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. Очистить key

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

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

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

включает проверочных строк для данного совпадения. Если строка найдена, она возвращает 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. Тим совпадений. Расчетное значение: 4 - 1 = 3
  4. Тим совпадений. Расчетное значение: 3 - 1 = 2
  5. Тим совпадений. Расчетное значение: 2 - 1 = 1
  6. Тим совпадений.Расчетное значение: 1 - 1 = 0

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

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

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

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

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

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

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

В-пятых, калькулятор вычисляет результат 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 operator , нам также нужно проверить, является ли вычислить .

  если (! Действие) {
  если (
    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 . Если это не очистить , мы ищем кнопку очистки и меняем ее 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. 45 action13
  5. 45 modValue
  6. operator

Мы можем получить keyContent и action из key .Мы также можем получить firstValue , modValue , operator и previousKeyType из Calculator.dataset .

Это означает, что для функции createResultString требуются три переменные: ключ , displayNum и Calculator.dataset . Поскольку 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 и DisplayNum .

  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 === 'вычислить') {
  пусть 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 = (ключ, калькулятор) => {
  // Необходимые переменные и свойства
  // 1.ключ
  // 2. калькулятор
  // 3. CalculatedValue
  // 4. displayNum
  // 5. modValue
}  

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

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

  1. ключ
  2. Calculator
  3. Расчетное значение
  4. 14 Отображаемое значение

Начиная с , 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 🙂

Как создать пользовательские виджеты калькулятора для вашего веб-сайта

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

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

Что такое виджет веб-сайта?

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

Общие типы виджетов

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

Итак, самые популярные виджеты следующие:


Расчет заранее

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

Платежный виджет

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

Виджет консультации

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


Электронный маркетинг

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

Виджеты календаря

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

Виджет поиска

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

Виджеты социальных сетей

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

Виджеты калькулятора

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

Виджеты веб-сайтов

Хотите улучшить свой бизнес-сайт и добавить на него необходимый виджет?

Наш опыт создания и расчета индивидуальных заказов

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

Чемодан для печати HDR - расчет заказа

HDR Print - крупная полиграфическая компания, которая печатает все типы документов, баннеров, плакатов и т. Д. Поскольку количество заказов начало быстро расти, владельцам необходимо было оцифровать свой бизнес и автоматизировать некоторые рабочие процессы.Команда GBKSOFT создала индивидуальный веб-сайт для HDR Print. Одна из основных функций - калькулятор заказов. Какие функции предлагает калькулятор? Это следующие:

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

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

👍

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

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

Кейс Soljets - система ERP

Источник: Скриншот веб-сайта Soljets

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

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

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

Преимущества индивидуального программного обеспечения для расчетов на вашем сайте

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

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

  • Привлечь целевую аудиторию

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

  • Выделяться среди конкурентов

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

  • SEO и улучшение трафика

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

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

Встраивание калькулятора расширяет ваш бизнес. Представьте, если завтра вместо 10 заказов ваша компания получит 100. Справятся ли с этим ваши сотрудники?

Калькулятор

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

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

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

Функции калькулятора

Хотите знать, какие преимущества калькулятор может принести вашему сайту?

Общие функции виджета калькулятора

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

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

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

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

Конкуренты на ваш сайт

Также важно помнить о конкурентах и ​​быть на шаг впереди них.

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

Сервисы, где можно создать калькулятор

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

мкРасчет

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

.
  • Basic
    3,20 долл. США в месяц за до 5 проектов со всеми основными функциями, но без поддержки в чате.
  • Стандартный
    8 долларов в месяц для 15 проектов с более чем 1000 уведомлений по электронной почте и более 10 SMS-уведомлений.
  • Pro
    19,20 долл. США в месяц за неограниченное количество проектов, расширенные функции и поддержку в чате.

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

Кальконик

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

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

Расчет CMS

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

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

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

Создайте свой калькулятор!

Имеете в виду свой калькулятор и нуждаетесь в профессиональной консультации?

Как создать калькулятор?

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

Необходимые инвестиции

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

Способ застройки

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

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

Продвижение

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

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

Ремонт и техническое обслуживание

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

Заключение

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

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

Создайте свой калькулятор!

Хотите создать индивидуальный калькулятор и уникальный дизайн для своего сайта?

узнайте, как встроить калькулятор на сайт

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

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

Каковы преимущества использования встроенных калькуляторов в качестве маркетинговых инструментов?

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

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

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

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

Привлечение аудитории

С развитием технологий ожидания потребителей повысились. Таким образом, компаниям становится все труднее выделиться на фоне конкурентов. Этот разрыв можно сократить, инвестируя в интерактивный контент, поскольку он побуждает к действию, побуждая людей активно взаимодействовать с брендом, а не пассивно потреблять контент. Чтобы хорошо работать, это просто должно быть увлекательно.

Привлечение потенциальных клиентов

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

Повышение конверсии

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

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

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

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

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

  • первый: сгенерировать код встраивания контента, который вы хотите разместить на своем веб-сайте
  • второй: выделите код встраивания и затем скопируйте его в буфер обмена
  • третий: откройте программу просмотра HTML в своем система управления контентом
  • четвертый: вставьте фрагмент HTML, который вы только что скопировали, в окно просмотра HTML
  • пятый: нажмите «ОК» или «Сохранить».«Теперь вы встроили контент в свой веб-сайт.

Говоря таким образом, это кажется простым. Однако вам должно быть интересно, что это за коды на самом деле и действительно ли они требуются. Итак, давайте начнем с объяснения того, что такое код внедрения: это блок HTML, который встроен в источник страницы и при этом создает объект.

Коды HTML, в свою очередь, являются одним из основных языков, используемых в Интернете. Они работают над дизайном и версткой сайтов. Вы часто видите этот код, например, когда находитесь в «задней части» своего сайта.

Но что, в конце концов, означает встраивание контента на веб-сайт? Это просто: это просто процесс размещения чего-либо на сайте, в блоге, в социальных сетях и т. Д. И как это связано с кодами? На этот контент часто ссылаются с помощью HTML для обозначения интерактивного контента, взятого из других сетей.

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

Как встроить калькулятор еще проще?

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

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

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

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

Проект: Калькулятор | Проект Odin

Введение

Вы сделали это! К настоящему времени у вас должно быть на самом деле твердых знаний об основах JavaScript. Конечно, есть чему поучиться, но на этом этапе вы должны уметь творить. Наш последний проект объединит все, что вы уже узнали: вы собираетесь создать экранный калькулятор, используя JavaScript, HTML и CSS.

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

Важное примечание: Прежде чем вы начнете работать с этим проектом калькулятора, нам нужно сделать одно предупреждение. Когда вы изучаете, как оценивать сложные математические выражения в JavaScript, вы, вероятно, столкнетесь с дразнящей функцией eval () .Однако эта функция может быть очень опасной, и ее никогда не следует использовать! Вам нужно будет создать свои собственные функции для оценки выражений в рамках этого проекта калькулятора. В том же примечании, исследуя, как вычислять выражения для этого проекта, вы можете столкнуться с решениями, предлагающими вернуть new Function () , который оценивает строку. Подобно eval () , это не должно использоваться из-за потенциальных ловушек при оценке небезопасных данных. Кроме того, где развлечение в решениях, которые делают всю работу за вас? Поехали!

Переуступка

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

  1. Ваш калькулятор будет содержать функции для всех основных математических операторов, которые обычно встречаются на простых калькуляторах, поэтому начните с создания функций для следующих элементов и тестирования их в консоли браузера.
    1. добавить
    2. вычесть
    3. умножить
    4. делить
  2. Создайте новую функцию , оперируйте , которая принимает оператора и 2 номера, а затем вызывает одну из вышеуказанных функций для этих номеров.
  3. Создайте базовый калькулятор HTML с кнопками для каждой цифры, каждой из вышеперечисленных функций и клавишей «Равно».
    1. Пока не беспокойтесь о подключении JS.
    2. Также должен быть дисплей для калькулятора, заполните его фиктивными числами, чтобы он выглядел правильно.
    3. Добавьте кнопку «очистить».
  4. Создайте функции, которые заполняют дисплей при нажатии цифровых кнопок… вы должны сохранить «отображаемое значение» где-нибудь в переменной для использования на следующем шаге.
  5. Заставьте калькулятор работать! Вам нужно будет сохранить первое число, которое вводится в калькулятор, когда пользователь нажимает оператор, а также сохранить, какая операция была выбрана, а затем operation () для них, когда пользователь нажимает клавишу «=».
    1. У вас уже должен быть код, который может заполнять дисплей, поэтому после вызова operation () обновите дисплей с помощью «решения» для операции.
    2. Это самая сложная часть проекта. Вам нужно выяснить, как сохранить все значения и вызвать с ними функцию управления. Не расстраивайтесь, если вам потребуется время, чтобы понять логику.
  6. Проблемы: обратите внимание и исправьте эти ошибки, если они обнаруживаются в вашем коде:
    1. Пользователи должны иметь возможность объединить несколько операций и получить правильный ответ, при этом каждая пара чисел оценивается одновременно.Например, 12 + 7-5 * 3 = должно дать 42 . Примером поведения, которое мы ищем, может быть это студенческое решение. Ваш калькулятор не должен вычислять более одной пары чисел за раз. Если вы вводите число, тогда должен отображаться оператор и другое число, это вычисление должно отображаться, если ваш следующий ввод - оператор. Результат расчета следует использовать в качестве первого числа в вашем новом расчете.
    2. Вам следует округлять ответы до длинных десятичных знаков, чтобы они не выходили за пределы экрана.
    3. Нажатие = перед вводом всех чисел или оператора может вызвать проблемы!
    4. Нажатие «очистить» должно стереть все существующие данные .. убедитесь, что пользователь действительно начинает все заново после нажатия «очистить».
    5. Отображать язвительное сообщение об ошибке, если пользователь пытается разделить на 0… не позволяйте этому вывести из строя ваш калькулятор!
  7. ДОПОЛНИТЕЛЬНЫЙ КРЕДИТ: пользователи могут получать числа с плавающей запятой, если они произведут математические вычисления, необходимые для их получения, но пока не могут их вводить.Добавьте . , и пользователи могут вводить десятичные дроби! Убедитесь, что вы не разрешаете им вводить более одного: 12.3.56.5 . Эти числа сложно вычислить. (отключите десятичную кнопку, если она уже есть на дисплее)
  8. ДОПОЛНИТЕЛЬНЫЙ КРЕДИТ: Сделайте это красиво! Это может быть хороший портфельный проект… но не если он УЖАСНЫЙ. По крайней мере, сделайте операции другим цветом, чем кнопки клавиатуры.
  9. ДОПОЛНИТЕЛЬНЫЙ КРЕДИТ: добавьте кнопку «Backspace», чтобы пользователь мог отменить действие, если нажмет не ту цифру.
  10. ДОПОЛНИТЕЛЬНЫЙ КРЕДИТ: Добавьте поддержку клавиатуры!

Как построить калькулятор с нуля? Edureka

Каждому, кто начинает знакомство с новым языком, приходится изрядно потрудиться, чтобы изучить различные модули, прежде чем работать над реальными отраслевыми проектами. Поскольку мы знакомы с общим соглашением начинать с наших программ «привет, мир», есть несколько программ, которые мы можем практиковать для изучения основ любого языка. Если вы когда-либо пробовали учиться систематически, нет сомнений, что вы никогда не сталкивались с этапом построения калькулятора.Итак, сегодня мы собираемся создать простой калькулятор с использованием JavaScript. Здесь рассматриваются различные темы:

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

JavaScript, более известный как «язык сценариев» веб-страниц, может творить чудеса. Калькулятор, как мы знаем, будет выполнять наши основные операции, а именно. Сложение, вычитание, умножение и деление. Для начала вы должны быть знакомы с HTML и CSS.Раздел с кодом JavaScript, мы позаботимся об этом.

Требования для построения калькулятора с использованием JavaScript
  • Интегрированная среда разработки
  • Локальный сервер / онлайн-компилятор

Если вы новичок в разработке веб-сайтов, вы должны знать, что для этого нужен локальный сервер. проверить коды перед развертыванием. Вы можете выбрать wamp, xampp или любой другой сервер. Для написания кода существует множество вариантов: Sublime Text 3, NetBeans, Brackets и т. Д.После того, как вы закончите настройку платформ, остальная часть работы станет легкой прогулкой.

Чтобы связать различные файлы, вы можете использовать следующее:

Встраивание CSS
  • Встроенный CSS: Когда мы хотим добавить CSS к желаемым элементам, мы обращаемся к встроенному CSS. Если вы новичок в разработке, скорее всего, вы предпочитаете встроенный CSS другим типам. Это хорошо для начала, но определенно не подходит для SEO.
  • Внутренний или встроенный CSS: Свойства и правила CSS устанавливаются в одном и том же HTML-документе, указанном тегами в разделе.
  • Внешний CSS: Отдельный файл CSS с атрибутами стиля, связанный с основным файлом в корневом каталоге.

В нашем калькуляторе JavaScript мы будем использовать внутренний CSS. Во-первых, нам нужно выяснить, сколько кнопок нам понадобится. На данный момент мы придерживаемся минимума жизнеспособных функций нашего базового калькулятора. Итак, список элементов приведен ниже:

  1. Экран дисплея: Он будет использоваться для пользовательского ввода, а также для вывода результатов.Даже если мы разработаем полный калькулятор, нет смысла использовать его без экрана отображения в реальном времени.
  2. Кнопки: Нам понадобится как минимум 17 кнопок для базового калькулятора:
    • Числа: Кнопки для цифр необходимы. Для этой категории нам понадобится 10 кнопок. 1-9 и 0.
    • Операции: Для четырех основных операций нам понадобятся 4 кнопки.
    • Другое: Для десятичного числа, очистки и результата нам нужны еще 3 кнопки.

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

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

Экран вывода:

На этом мы подошли к концу нашей статьи.Надеюсь, вы поняли самый простой способ создать калькулятор на JavaScript.

Теперь, когда вы знаете о методах массива JavaScript, ознакомьтесь с курсом для сертификации веб-разработки от Edureka. Сертификационный курс по веб-разработке поможет вам научиться создавать впечатляющие веб-сайты с помощью HTML5, CSS3, Twitter Bootstrap 3, jQuery и API Google и развертывать их в Amazon Simple Storage Service (S3).

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

Удивительный 30-секундный калькулятор цен на веб-дизайн / Plato

Во всяком случае, сколько должен стоить веб-сайт?

Может быть трудно получить надежный ценовой диапазон для проекта веб-дизайна, не связавшись с множеством поставщиков веб-дизайна и попросив расценки. Большинство людей дадут вам короткий ответ: «Это зависит от обстоятельств», и это правда. Цены на веб-сайты довольно сильно различаются в зависимости от того, какие функции вам нужны, но они по-прежнему находятся в пределах общего диапазона, и вот он (обновлено в июне 2015 г.):

Простые веб-сайты с индивидуальным дизайном (1–10 страниц): 400–10 000 долларов США

отл.Создание сайта с нуля

Сложные сайты (10+ страниц или сайты с большим количеством программ): 10 000–25 000 долл. США

отл. Пользовательский сайт в социальной сети или веб-приложение

Для справки - ваш типичный сайт для малого бизнеса обычно стоит от 2000 до 6000 долларов.

Могу ли я получить собственный сайт менее чем за 1000 долларов?

Да, но вам, вероятно, не понравится то, что вы получаете.Примерно самая низкая цена, которую вы найдете для всего настраиваемого веб-сайта, будет составлять от 400 до 500 долларов, что почти наверняка будет поступать из-за границы (очень часто из Индии и Пакистана). Эти веб-сайты, как известно, имеют очень и очень низкое качество и, вероятно, мало что сделают для успеха вашего бизнеса. Интернет-маркетинг в США - невероятно сложная дисциплина, даже если ваш первый язык - английский - представьте, как это может быть с языковым барьером! Если вы действительно хотите зарабатывать деньги в Интернете, вам понадобится сайт более высокого качества.

Для достаточно качественного сайта американской фирмы минимальная цена обычно составляет около 4000 долларов. За любую функцию электронной коммерции большинство фирм берут не менее 6 тысяч долларов.

Что, если мой дизайнер хочет почасовую оплату?

Работа за рубежом: 5-40 долларов США

Внештатный сотрудник: 30-90 долларов (обычно)

Professional: 45–120 долларов США

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

Прочие расходы на веб-сайт

Веб-хостинг: 4–50 долларов в месяц

Плата за хостинг - это способ оплаты «ренты» за размещение своего веб-сайта в Интернете.Для простых веб-сайтов вам не потребуется более 1 ГБ пространства в год и 3–10 ГБ полосы пропускания. Когда вы начнете расти, вам захочется расширить свой хостинг, но, если вы не размещаете большие файлы изображений или потоковое видео, в этом, скорее всего, скоро не будет необходимости. Почти все фирмы, занимающиеся веб-дизайном, будут работать с вашим существующим хостинг-провайдером (если он у вас есть), поэтому не думайте, что вам нужно переключаться каждый раз, когда вам нужен редизайн.

Регистрация домена: 7–14 долларов в год

Ежегодный сбор за регистрацию домена продлевает ваше исключительное право на использование вашего доменного имени.Вы можете зарегистрировать домен самостоятельно или через фирму, занимающуюся веб-дизайном. Предупреждение : если ваша компания, занимающаяся веб-дизайном, регистрирует ваше доменное имя для вас, и вы не уверены, заслуживают ли они доверия, убедитесь, что они зарегистрировали домен в на ваше имя , а не на свое. Если домен зарегистрирован на название своей компании, некоторые поставщики доменов считают их фактическими законными владельцами домена - это означает, что если вам когда-либо понадобится сменить фирму веб-дизайна, вы не сможете сделать это, не обращаясь к фирме.Я не могу сказать вам, как часто мы сталкиваемся с клиентами, у которых их фирмы, занимающиеся веб-дизайном, выманивали их доменные имена. Нелепым фирмам потребуется «переводный платеж», чтобы передать контроль над доменом, иногда 500 долларов или больше. Убедитесь, что вы никогда не попадете в такое положение!

И это все!

Просто чтобы вы знали - Plato Web Design берет 2500 долларов за сайт для малого бизнеса (одна из самых низких цен в Интернете), который включает высококачественный индивидуальный веб-дизайн, маркетинговую помощь и множество других замечательных бесплатных услуг.Получите бесплатное предложение сегодня.



ПОЛУЧИТЬ ЦЕНУ

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

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

Недавно я наткнулся на изящное веб-приложение под названием JSCalc , которое позволяет любому создать свой собственный встраиваемый виджет калькулятора с нуля .Он работает через JavaScript, поэтому вам нужно, чтобы было комфортно с JS-кодом . Это веб-приложение поможет вам сэкономить массу времени, создавая довольно сложные калькуляторы с нуля.

Читайте также: Полезные сценарии выбора календаря и даты для веб-разработчиков

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

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

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

  1. IO - создание полей ввода и данных вывода
  2. Скрипт - запись фактических вычислений на JavaScript
  3. Поделиться - встроенный код для вашего сайта или URL для прямой ссылки

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

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

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

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

Автор записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *