Обзор посвящен созданию JavaScript-калькулятора. Домашнее задание для каждого начинающего JavaScript-ниндзя! ) В коде используется не чистый JavaScript, а JavaScript + jQuery.
Пример и материал не является оригинальным, основан на зарубежном источнике. Указывать источник не буду, потому что это не имеет смысла - таких кратких видеоуроков просто огромное количество - выбирай любой, какой понравится. )
HTML разметка
HTML-разметка для будущего калькулятора основана на HTML-элементах
, 1
form
, 1
input
. Ничего сверхестественного в ней нет.1
button
Единственный момент - вопрос компоновки кнопок, куда правильно “засунуть” кнопки с арифметическими операциями:
CSS стили
Со стилизацией будущего калькулятора тоже проблем не должно возникнуть. Я использовал flexbox для выравнивания кнопок:
JavaScript код
Переходим к самому интересному - созданию JavaScript-кода для калькулятора. В своем примере я использовал JavaScript + jQuery.
Последний применил только из-за удобства манипуляции с DOM. Недавно узнал о существовании библиотеки Underscore.js как альтернативы jQuery, но меньшего размера. Надо опробовать Underscore.js обязательно! )
Первым делом инициализируем кнопки калькулятора. Для этого забираем значения из атрибута
кнопок 1
value
и динамически вставляем в HTML-разметку:1
button
Исходный вид калькулятора подготовили - он теперь выглядит как настоящий калькулятор! Если не принимать во внимание кошмарных цветов и их сочетания ) Ну мы не дизайнеры, нам простительно )
Теперь стоит задача - при нажатии на кнопку калькулятора чтобы ее значение появлялось в окошке последнего. Тоже ничего сложного, если подумать.
Просто нужно забрать у активной кнопки значение ее атрибута
и передать как значение элемента 1
value
.1
input
Небольшая тонкость здесь - нужно конкатенировать текущее значение элемента
с текущим значением элемента 1
button
; иначе будет происходить простое замещение предыдущего значения элемента 1
input
текущим значением элемента 1
input
:1
button
Полная очистка экрана калькулятора элементарно проста - достаточно при нажатии на соответствующую кнопку передать в элемент
пустое значение:1
input
Дальше уже немного интереснее - будем оживлять кнопку
. То есть - ввели в окошко калькулятора, к примеру, 1
=
. По нажатии на кнопку 1
2 + 3
в окошке должен появиться результат этой арифметической операции.1
=
На помощь приходит функция JavaScript под названием
. На javascript.ru эта функция подробно расписана.1
eval()
В результате код для “оживления” кнопки
будет выглядеть “скромно”:1
=
Наш калькулятор почти готов. Осталось добавить жизни к двум последним кнопкам - возведения в степень и посимвольной очистки экрана калькулятора.
Для возведения в степень воспользуемся стандартной JavaScript-библиотекой
и ее методом 1
Math
.1
pow()
Заберем у элемента
его текущее значение и передадим в качестве одного из аргументов в метод 1
input
. Второй аргумент в нашем случае - это константа 3:1
pow()
Последний шаг к успеху создания калькулятора - это “оживление” кнопки посимвольной очистки экрана калькулятора.
В этом случае воспользуемся стандартным методом JavaScript -
. Это метод JavaScript(), который извлекает из строки подстроку и возвращает ее в виде новой строки - почитать с примерами.1
substring()
В качестве аргументов принимает два параметра - начальную и конечную позицию, которые выступают как начальный и конечный индекс массива. Массивом в данном случае является строка.
Функция (на кнопке посимвольной очистки) в нашем случае будет работать так - забираем у элемента
его текущее значение. Значение возвращается в виде строки, конечно.1
input
Поэтому находим ее длину (
) и укорачиваем на один (последний) символ - 1
length
. Таким образом мы динамически укорачиваем текущее значение в окне калькулятора на один символ.1
length - 1
Затем нам нужно заменить текущее значение окна калькулятора укороченным на один символ значением. Для этого берем метод
и с помощью него “обрезаем” текущую строку; этот метод возвращает “обрезанный” вариант. Нам осталось только вставить его в окно калькулятора.1
substring()
Результат будет выглядеть таким образом:
Вот наш калькулятор и готов - ниже полный JavaScript-код:
Конечно, примеры кода из этой статьи хоть и не являются укороченными, но не дают полного представления о разрабатываемом нами калькуляторе.
Поэтому привожу ссылку на готовый вариант калькулятора, который создавался в этой статье. На CodePen можно его посмотреть и разобрать детально (при желании).
Как вариант для сравнения, можно взглянуть на более сложный пример создания калькулятора, на чистом JavaScript. Пример был найден мною на просторах CodePen.
Заключение
Рассмотренный в статье пример лично для меня оказался на удивление прост - я ожидал большей (и более запутанной) кучи кода.
На этом все. В дальнейшем буду продолжать флудить на тему JavaScript, ибо для себя с удивлением обнаружил, что мне в последнее вермя доставляет удовольствие разбирать и рассматривать готовые примеры на JavaScript.
Единственное, что меня огорчает - тот факт, что они чужие )