В этом уроке вы узнаете как писать простые и сложные калькуляторы на JavaScript и установить их на свой сайт. Исходник скрипта доступен на странице ли можете скачать его в конце этого поста. Мы напишем калькулятор цены ли расчета стоимости товаров или услуг на чистом JS. Поскольку сложность этой задачи сравнительно небольшая, то подключать библиотеку jQuery мы не будем, вполне можно обойтись без нее. Но для начала предлагаю посмотреть пример того, что получится в итоге.
За основу возьмем услугу по перевозке грузов и будем считать ее стоимость. И перед тем, как начать, необходимо определить исходные данные.
Стоимость 1кг
5.5 ₽
Стоимость куб²
3500 ₽
Погрузка/разгрузка
1500 ₽
Доставка до места
3500 ₽
Цена за 1км
2 ₽
Хрупкий груз
2000 ₽
Все эти параметры я взял с потолка. Основная задача, это понять принцип и тогда вы сможете самостоятельно написать калькулятор любой сложности на JS для своего сайта.
Теперь нужно заняться оформлением, то есть как будет выглядеть интерфейс калькулятора на странице. Для удобства буду использовать Bootstrap, чтобы вручную не писать CSS. HTML код разметки будет таким:
В JS коде первым делом запишем все инпуты (input) в переменные для дальнейшей работы с ними. А так же определим неизменные значения, которые я записал в таблицу. Затем будет функция для range слайдера и после нее основная функция расчета стоимости услуги с предварительной проверкой заполнения полей. Не буду разбивать код на части, а дополню его комментариями для лучшего понимания.
var btn = document.querySelector('#btn'),
out = document.querySelector('#out'),
weight = document.querySelector('#weight'),
vol = document.querySelector('#vol'),
load = document.querySelector('#load'),
del = document.querySelector('#del'),
frag = document.querySelector('#frag'),
range = document.querySelector('#range'),
rasstoyanie = document.querySelector('.rasstoyanie').innerHTML=500;
weight = document.querySelector('#weight'),
vol = document.querySelector('#vol'),
kg =5.5,
kub =3500,
km =2;// range slider
range.onchange=function(){var rasstoyanie = document.querySelector('.rasstoyanie').innerHTML= range.value;}// Basic function
btn.onclick=function(){if(weight.value!=''&& vol.value!=''){if(load.checked){
load.value=1500;}else{
load.value=0;}if(del.checked){
del.value=3500;}else{
del.value=0;}if(frag.checked){
frag.value=2000;}else{
frag.value=0;}var sum =(weight.value* kg)+(vol.value* kub)+Number(load.value)++Number(del.value)+Number(frag.value)+(range.value* km);
out.innerHTML= sum;}else{
alert('Введите вес и объем груза');}}
var btn = document.querySelector('#btn'),
out = document.querySelector('#out'),
weight = document.querySelector('#weight'),
vol = document.querySelector('#vol'),
load = document.querySelector('#load'),
del = document.querySelector('#del'),
frag = document.querySelector('#frag'),
range = document.querySelector('#range'),
rasstoyanie = document.querySelector('.rasstoyanie').innerHTML = 500;
weight = document.querySelector('#weight'),
vol = document.querySelector('#vol'),
kg = 5.5,
kub = 3500,
km = 2;
// range slider
range.onchange = function(){
var rasstoyanie = document.querySelector('.rasstoyanie').innerHTML = range.value;
}
// Basic function
btn.onclick = function(){
if (weight.value != '' && vol.value != '') {
if (load.checked){
load.value = 1500; }
else
{
load.value = 0;
}
if (del.checked){
del.value = 3500; }
else
{
del.value = 0;
}
if (frag.checked){
frag.value = 2000; }
else
{
frag.value = 0;
}
var sum = (weight.value * kg) + (vol.value * kub) + Number(load.value) + + Number(del.value) + Number(frag.value) + (range.value * km);
out.innerHTML = sum;
}else{
alert('Введите вес и объем груза');
}
}
По такой схеме, как и в калькуляторе процентов онлайн, можно добавлять неограниченное количество полей и присваивать им какие-то значения. Но не нужно забывать про удобство для конечного пользователя, все должно быть максимально понятно для восприятия. Надеюсь эта статья открыла вам глаза на то, как создать калькулятор на JavaScript и теперь вы с легкостью сможете применить полученные знания в своих проектах. А если что-то было непонятно, то пишите в комментариях ваши вопросы, будем разбираться вместе.
Добрый день! Вставляю код html, но не срабатывает, форма есть, но не в таком виде как на демо. И ничего не считает. Подскажите, может кроме кода еще что то надо прописать?
Что именно не понятно? Это обычное условие. Если переменная А меньше 5 то переменной Б присвоим 100. Во всех других случаях переменная Б будет равна 50.
Дело в том, что мне нравится тема создания различного рода калькуляторов расчёта стоимости товаров и особенно услуг. Несколько простейших калькуляторов создано на базе одного из уроков А.Лущенко из его канала на YouTube. Создал отдельную страничку для расчёте потребления и оплаты электроэнергии. Она указана здесь в реквизитах к комментарию. Поэтому мне бы хотелось самостоятельно расширить свою практику в программировании различных калькуляторов. Вот и обращаюсь с тем, что же почитать по JS, точнее, какие разделы нужно особенно проштудировать для решения подобных задач. Причём, интересно, в кодах предусматривать различные антиспамные попытки ввода не корректных данных. Именно это и есть в ваших статьях блога. А пока приступаю к изучению ваших кодов калькуляторов потихоньку. У Вас лёгко читаемый воздушный сайт. А где подписка?
….. обращаюсь с тем, что же почитать по JS и где, точнее, какие разделы нужно особенно проштудировать для решения подобных задач — создание калькуляторов.
P.S. Не смотря, что стоит чек бокс «Оповещать о новых комментариях по почте», оно не пришло.
Хорошо бы посмотреть ваши наработки в калькуляторах с использованием выпадающих радио кнопок, с возможностью пользователю права не только ставит чек, но и вставлять свои числа.
В том же калькуляторе перевозок варьировать цену транспортировки различных грузов в режиме движка, или право выбора изготовления по цене одного и того же изделия, но из деталей разной толщины материала.
Добрый день, помогите пожалуйста. у меня расчет стоимости состоит просто из checkbox, я откорректировал код и при загрузке страницы у меня просто пропадает скролбап, и нет возможности пролистать страницу вниз до расчета стоимости
HTML:
Рассчитай стоимость услуг в пару кликов!
Где Вы планируете рекламироваться ?
Facebook / Instagram
Google Adwords
Yandex Direct
Офферы в рекламных компаниях ?
С Нас
С Вас
Текст в рекламных компаниях ?
С Нас
С Вас
На какой планируеться ведение рекламной компании ?
Подтверждаю, все калькуляторы Александра работают безупречно. Все его разработки я разобрал, модернизировал и научился алгоритму их составления. Самое ценное я узнал здесь, что оказывается одним кликом можно запускать не только одну функцию, а сколько угодно одновременно и получать в результате общий суммарный итог в виде одной или нескольких цифр. Рекомендую обратить внимание на правильность срабатывания логических цепочек и арифметических действий. Желательно знать теорию циклов применительно к параметру date, что сильно сокращает написание кода.
Пример разработанного кода калькулятора на JS расчёта цены металлической решётки из разных материалов и сложности рисунка можно посмотреть на моей странице под моим именем в аватаре. Используется любой телефон для просмотра. Скопировать все коды можете прямо со страницы исходных кодов. Спасибо Александру за науку и практику.
Доброго времени суток!
Начну из далека. Подскажите как правильно создать калькулятор для расчета стоимости доставки транспортными компаниями по API.? Форму калькулятора вставил, но дальше все идет не так. Все в разрез. Уже 2 дня потратил с GPT искл исходы и ошибки. В итоге: продуктивность =0!!!!!!
Как мне сделать это? Просил фрилансеров, по 10 дней ждал каждого- в итоге ответ-я не могу. Это что действительно очень сложно? Я смотрю пример сайт catapulto.ru
там все нормально работает.
Добрый день! Вставляю код html, но не срабатывает, форма есть, но не в таком виде как на демо. И ничего не считает. Подскажите, может кроме кода еще что то надо прописать?
Попробуйте скопировать код с демо страницы. Больше ничего прописывать не нужно, все должно и так работать.
Доброго.
какой код нужен, чтоб при введение цифр сразу показывался итог ?
Еще хотелось бы код с ЕСЛИ ТО.
Заранее спасибо.
В таком случае событие будет не клик , а oninput или onkeydown.
Доброго времени суток! Помогите пожалуйста разобраться с этим) не получается перемонтировать..
Что перемонтировать?
if(a < 5){
b = 100;
}else{
b = 50;
}
Сие чудо в ваш урок 🙂
Что именно не понятно? Это обычное условие. Если переменная А меньше 5 то переменной Б присвоим 100. Во всех других случаях переменная Б будет равна 50.
На блог пришёл в поиске проблемы. Понравилось.
Дело в том, что мне нравится тема создания различного рода калькуляторов расчёта стоимости товаров и особенно услуг. Несколько простейших калькуляторов создано на базе одного из уроков А.Лущенко из его канала на YouTube. Создал отдельную страничку для расчёте потребления и оплаты электроэнергии. Она указана здесь в реквизитах к комментарию. Поэтому мне бы хотелось самостоятельно расширить свою практику в программировании различных калькуляторов. Вот и обращаюсь с тем, что же почитать по JS, точнее, какие разделы нужно особенно проштудировать для решения подобных задач. Причём, интересно, в кодах предусматривать различные антиспамные попытки ввода не корректных данных. Именно это и есть в ваших статьях блога. А пока приступаю к изучению ваших кодов калькуляторов потихоньку. У Вас лёгко читаемый воздушный сайт. А где подписка?
Рад, что вам нравится. Подписки как таковой нет. Не уверен, что на нужна.
….. обращаюсь с тем, что же почитать по JS и где, точнее, какие разделы нужно особенно проштудировать для решения подобных задач — создание калькуляторов.
P.S. Не смотря, что стоит чек бокс «Оповещать о новых комментариях по почте», оно не пришло.
Хорошо бы посмотреть ваши наработки в калькуляторах с использованием выпадающих радио кнопок, с возможностью пользователю права не только ставит чек, но и вставлять свои числа.
В том же калькуляторе перевозок варьировать цену транспортировки различных грузов в режиме движка, или право выбора изготовления по цене одного и того же изделия, но из деталей разной толщины материала.
Это уже из разряда сложных. Есть пример, но попроще: bumkart73.ru/#calc
Спасибо за ссылку. Интересное решение.
Добрый день, помогите пожалуйста. у меня расчет стоимости состоит просто из checkbox, я откорректировал код и при загрузке страницы у меня просто пропадает скролбап, и нет возможности пролистать страницу вниз до расчета стоимости
HTML:
Рассчитай стоимость услуг в пару кликов!
Где Вы планируете рекламироваться ?
Facebook / Instagram
Google Adwords
Yandex Direct
Офферы в рекламных компаниях ?
С Нас
С Вас
Текст в рекламных компаниях ?
С Нас
С Вас
На какой планируеться ведение рекламной компании ?
На месяц
На неделю
0.0 ₽
JS:
У вас скорее всего в HTML косяк. Напишите мне в телегу, чтобы здесь не захламлять страницу: https://t.me/Mavrinn
Подтверждаю, все калькуляторы Александра работают безупречно. Все его разработки я разобрал, модернизировал и научился алгоритму их составления. Самое ценное я узнал здесь, что оказывается одним кликом можно запускать не только одну функцию, а сколько угодно одновременно и получать в результате общий суммарный итог в виде одной или нескольких цифр. Рекомендую обратить внимание на правильность срабатывания логических цепочек и арифметических действий. Желательно знать теорию циклов применительно к параметру date, что сильно сокращает написание кода.
Пример разработанного кода калькулятора на JS расчёта цены металлической решётки из разных материалов и сложности рисунка можно посмотреть на моей странице под моим именем в аватаре. Используется любой телефон для просмотра. Скопировать все коды можете прямо со страницы исходных кодов. Спасибо Александру за науку и практику.
А как получать результаты расчета на емайл владельца сайта, если пользователь указал номер телефона или свой емайл?
Только через PHP.
Добрый день, а как можно разбить полученную сумму (число) на разряды, например, 10 000 р.
Примерно так:
Здравствуйте. А что значит:
required=»» ?
Обязательное для заполнения поле.
А для чего указан знак равно и кавычки?
Можно указывать так: required=»required» Можно просто: required. Так тоже можно: required=»» (в моем случае редактор автоматом поставил)
А каким редактором Вы пользуетесь?
Сейчас PHPStorm До этого Sublime и VSCode.
Благодарю за ответы. А как можно сделать квадратики для галочек больше, чтобы удобно было попадать пальцем на Андроиде?
https://serblog.ru/kastomnye-chekboksy-stilizaciya-cherez-css-custom-checkboxes/
Какой должен быть код урока, чтобы это работало с bootstrap 5?
JS будет тот же самый.
Здравствуйте. А как сделать без указания веса? Спасибо.
Самый простой вариант это принудительно указать weight.value = 0; И убрать поле веса из html.
Доброго времени суток!
Начну из далека. Подскажите как правильно создать калькулятор для расчета стоимости доставки транспортными компаниями по API.? Форму калькулятора вставил, но дальше все идет не так. Все в разрез. Уже 2 дня потратил с GPT искл исходы и ошибки. В итоге: продуктивность =0!!!!!!
Как мне сделать это? Просил фрилансеров, по 10 дней ждал каждого- в итоге ответ-я не могу. Это что действительно очень сложно? Я смотрю пример сайт catapulto.ru
там все нормально работает.
Какой API вы используете?