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

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

  • автор:

Как написать приложение на JavaScript: Создаем калькулятор на JS

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

Основы JavaScript для создания калькулятора

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

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

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

Вам понадобится текстовый редактор для написания кода и веб-браузер для его просмотра. Можно использовать любой текстовый редактор, такой как Sublime Text, Atom или Visual Studio Code. Что касается веб-браузера, вы можете использовать любой современный браузер, например, Chrome, Firefox или Safari.

Создание HTML-структуры онлайн калькулятора

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

   Простой калькулятор   
7
8
9
/
4
5
6
*
1
2
3
-
0
.
=
+

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

Добавление стилей CSS для калькулятора

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

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

Стилизуем калькулятор в целом

 /* Стилизация для всего калькулятора */ #calculator

Стилизуем дисплей калькулятора

/* Стилизация для дисплея */ #display

Делаем стили для кнопок

 /* Стилизация для кнопок */ .button

Добавляем дополнительные стили для наведения и кнопки «=»

/* Изменение цвета при наведении на кнопку / .button:hover < background-color: #0056b3; >/ Дополнительное оформление для кнопки равно */ .button.equals < background-color: #4CAF50; >.button.equals:hover

Финальний вид CSS калькулятора

 #calculator < width: 300px; margin: auto; padding: 20px; background-color: #f3f3f3; border-radius: 20px; box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1); >#display < width: 100%; height: 50px; text-align: right; margin-bottom: 10px; padding-right: 10px; box-sizing: border-box; border: none; background-color: #fff; font-size: 20px; border-radius: 10px; >.button < width: 66px; height: 40px; margin: 5px; display: inline-block; background-color: #007BFF; color: white; text-align: center; line-height: 40px; cursor: pointer; border-radius: 5px; font-size: 18px; transition: background-color 0.3s ease; >.button:hover < background-color: #0056b3; >.button.equals < background-color: #4CAF50; >.button.equals:hover 

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

Пишем логику калькулятора с использованием JavaScript

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

Сначала добавим JavaScript-код для обработки событий кликов по кнопкам.

Получаем все кнопки из документа:

 var keys = document.querySelectorAll('#calculator span'); var operators = ['+', '-', 'x', '/']; var decimalAdded = false; 

Добавляем событие onclick ко всем клавишам и выполняем действия

 for (var i = 0; i < keys.length; i++) < keys[i].onclick = function(e)  

Получаем ввод и значение кнопки:

 var input = document.querySelector('#display'); var inputVal = input.innerHTML; var btnVal = this.innerHTML; 

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

 if (btnVal == 'C')

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

 else if (btnVal == '=') < var equation = inputVal; var lastChar = equation[equation.length - 1]; 

Заменяем все случаи ‘ x ‘ на ‘ * ‘ соответственно. Это можно легко сделать с помощью регулярного выражения и флага ‘ g ‘, который заменит все вхождения найденного символа/подстроки.

 equation = equation.replace(/x/g, '*'); 

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

 if (operators.indexOf(lastChar) > -1 || lastChar == '.') equation = equation.replace(/.$/, ''); if (equation) input.innerHTML = eval(equation); decimalAdded = false; 

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

  1. Не должно быть двух операторов подряд.
  2. Уравнение не должно начинаться с оператора, кроме минуса.
  3. В числе не должно быть более одного десятичного разделителя.

Мы решим эти проблемы с помощью некоторых простых проверок.

indexOf (работает только в IE9+)

 else if (operators.indexOf(btnVal) > -1)  

Нажато на оператор. Получаем последний символ из уравнения

 var lastChar = inputVal[inputVal.length - 1]; 

Добавляем оператор, если входное значение не пусто и нет оператора в конце.

 if (inputVal != '' && operators.indexOf(lastChar) == -1) input.innerHTML += btnVal; 

Разрешаем минус, если строка пустая.

 else if (inputVal == '' && btnVal == '-') input.innerHTML += btnVal; 

Заменяем последний оператор (если он существует) на только что нажатый оператор.

 if (operators.indexOf(lastChar) > -1 && inputVal.length > 1)  

Здесь ‘ . ‘ соответствует любому символу, а $ означает конец строки, поэтому что бы то ни было (будет оператором в данном случае) в конце строки будет заменено на новый оператор.

 input.innerHTML = inputVal.replace(/.$/, btnVal); > decimalAdded =false; 

Теперь осталась только проблема с десятичным разделителем. Мы можем легко решить ее с помощью флага ‘ decimalAdded ‘, который мы установим один раз, когда добавим десятичный разделитель, и предотвратим добавление более одного десятичного разделителя сразу после его установки. Флаг будет сброшен при нажатии оператора, eval или клавиши очистки.

 else if (btnVal == '.') < if (!decimalAdded) < input.innerHTML += btnVal; decimalAdded = true; >> 

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

 else

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

 e.preventDefault(); 

В итоге наш JavaScript будет выглядеть так:

  

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

Этот код также содержит проверку, чтобы избежать следующих ситуаций:

  1. Два оператора не могут быть добавлены последовательно.
  2. Уравнение не может начинаться с оператора, кроме минуса.
  3. В числе не должно быть более одного десятичного разделителя.

Это реализовано с помощью нескольких простых проверок в коде.

Тестирование и исправление ошибок

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

1. Основные функциональные тесты

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

2. Тесты граничных значений

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

3. Исправление ошибок

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

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

Заключение

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

Как написать калькулятор на HTML и CSS без JavaScript

Материалом о разработке калькулятора на CSS и HTML, без файла JS, тега script и обработчиков событий в HTML делимся к старту курса по Fullstack-разработке на Python. За подробностями приглашаем под кат.

Постановка задачи

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

Как это сделать?

Начнём со взаимодействия с пользователем. Как без JS понять, что кнопка нажата? Ответ: при помощи значений радиокнопок:

    

.

.

input, p < display: none >#q-1:checked ~ .quote-1 < display: block; >#q-2:checked ~ .quote-2

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

Символ ~ — это селектор, выбирающий элементы на том же уровне сложности: A ~ B соответствует элементам B после A. Код выше по умолчанию скрывает элементы p, отображая их, только когда подключенная радиокнопка выбрана.

Переменные и счётчики CSS

Значения счётчиков в функции calc неприменимы, поэтому, чтобы сгенерировать число, объявим переменную. Напишем имя свойства с двумя дефисами (--) в начале и любым значением CSS: --colour: brown или --digit: 3. Для подстановки переменной вызовите функцию CSS var.

Счётчики CSS хранят и отображают числа. Они применяются, например, для автоматической нумерации разделов.

#set-to-1:checked ~ div < --digit: 1; >#set-to-2:checked ~ div < --digit: 2; >#set-to-3:checked ~ div < --digit: 3; >.number-display < counter-increment: digit var(--digit); >.number-display::after

Когда пользователь отмечает кнопку, внутри div задаётся значение переменной --digit, наследуемое всеми дочерними элементами. Это значение нельзя вывести напрямую, поэтому увеличим счётчик digit и отобразим его через сгенерированный content.

Чтобы получить числа больше 9, нужно просто продублировать уже существующие цифры. За счёт тщательно продуманной структуры HTML и использования промежуточных переменных дублирование CSS сводится к минимуму:

/* Include previous CSS */ .first-digit < --first-digit: var(--digit); >.second-digit

Переменная --digit по-прежнему задаётся через input, каждый отдельный div принимает это значение и присваивает его --first-digit, --second-digit и так далее: повторять код #set-to-1:checked для каждой цифры не нужно.

Функция CSS calc

Функция calc в CSS выполняет вычисления и применяется, например, когда задаётся значение width (ширины): calc(100% - 95px). Определим с помощью calc число элемента input, а также результат всех вычислений:

[name="theFirstDigit"]:checked ~ * .set-number < --number: var(--first-digit); >[name="theSecondDigit"]:checked ~ * .set-number < --number: calc(var(--first-digit)*10 + var(--second-digit)); >[name="theThirdDigit"]:checked ~ * .set-number < --number: calc(var(--first-digit)*100 + var(--second-digit)*10 + var(--third-digit)); >/* and so on */

Селектор * выбирает все элементы, поэтому в коде выше вы найдёте .set-number — потомка любого элемента после input с флажком и определённым именем. Второй селектор переопределяет первый просто потому, что расположен после первого.

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

@property и @counter-style

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

Счётчики при этом использовать нельзя, ведь их нельзя завести в calc. Воспользуемся экспериментальной функцией @property: она определяет переменную с помощью такого функционала, как проверка типа или контроль за наследованием значений. Определим @property:

@property --integer < syntax: ''; initial-value: 0; inherits: true; >

Так любое присваиваемое --integer значение округляется до целого числа. Чтобы отобразить число с точностью до семи знаков после запятой, сначала выполним следующие вычисления. Здесь --number определяется внешним кодом:

.number-display < --abs-number: max(var(--number), -1 * var(--number)); /* By suptracting 0.5 we make sure that we round down */ --integer: calc(var(--abs-number) - 0.5); --decimal: calc((var(--integer) - var(--abs-number)) * 10000000); --sign-number: calc(var( --abs-number) / var(--number)); >

Используя --integer для целых чисел и --decimal для знаков после запятой, можно увеличивать счётчики с похожими именами, но отображать их напрямую нельзя: например, для числа 1,005 значение --integer равно 1, а значение --decimal — 5.

Знаки после запятой дополняются пользовательским свойством @counter-style, оно применяется для отображения знака «минус»: мы не можем сообщить системе, что число -0,5 — это «отрицательный нуль». Вот как правильно отобразить -0,5:

@counter-style pad-7 < system: numeric; symbols: "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"; pad: 7 "0" >@counter-style sign < system: numeric; symbols: "" ""; >.number-display::after

Второй аргумент функции counter — это стиль. В стиле pad-7 определяется обычная система счисления, за исключением того, что любое значение с менее чем семью цифрами дополняется нулями.

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

Возможности

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

Чтобы всегда показывать метку следующей цифры, можно применять селектор ~, :checked и свойство display, а content — разбить на отдельные элементы, таким образом показывая десятичную часть только при необходимости.

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

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

Заключение

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

А пока вы практикуетесь, мы поможем прокачать ваши навыки или с самого начала освоить профессию, востребованную в любое время:

  • Профессия Fullstack-разработчик на Python
  • Профессия Frontend-разработчик

Краткий каталог курсов и профессий

Data Science и Machine Learning

  • Профессия Data Scientist
  • Профессия Data Analyst
  • Курс «Математика для Data Science»
  • Курс «Математика и Machine Learning для Data Science»
  • Курс по Data Engineering
  • Курс «Machine Learning и Deep Learning»
  • Курс по Machine Learning

Python, веб-разработка

  • Профессия Fullstack-разработчик на Python
  • Курс «Python для веб-разработки»
  • Профессия Frontend-разработчик
  • Профессия Веб-разработчик

Мобильная разработка

  • Профессия iOS-разработчик
  • Профессия Android-разработчик

Java и C#

  • Профессия Java-разработчик
  • Профессия QA-инженер на JAVA
  • Профессия C#-разработчик
  • Профессия Разработчик игр на Unity

От основ — в глубину

  • Курс «Алгоритмы и структуры данных»
  • Профессия C++ разработчик
  • Профессия Этичный хакер

А также

Как создать калькулятор, используя язык HTML

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

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

Количество источников, использованных в этой статье: 11. Вы найдете их список внизу страницы.

Количество просмотров этой статьи: 142 330.

В этой статье:

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

Часть 1 из 4:

Основы HTML-кода

Step 1 Изучите основные функции HTML.

  • html: этот элемент синтаксиса свидетельствует о языке, на котором написана программа. При написании кода могут использоваться несколько языков программирования, поэтому тег указывает на язык HTML. [1] X Источник информации
  • head: внутри этого тега задаются параметры других данных, то есть указываются так называемые метаданные. Как правило, команда используется для определения параметров стилистических элементов, таких как заголовки, подзаголовки и так далее. Этот тег представляет собой своеобразный зонтик, под которым находится основная часть программы. [2] X Источник информации
  • title: этот тег определяет название страницы, которое отобразится в веб-браузере, когда вы ее откроете.
  • body bgcolor= "#": этот атрибут задает цвет фона страницы. Число, которое вводится внутри кавычек после символа #, соответствует определенному цвету.
  • text= "": слово, которое вводится внутри кавычек, определяет цвет текста страницы.
  • form name="": этот атрибут определяет имя формы, которая используется для создания структуры на основе того, что Javascript известно значение имени формы. В нашем примере в качестве имени формы будет использовано значение «calculator» (калькулятор), что приведет к созданию специальной структуры страницы. [3] X Источник информации
  • input type="": это, пожалуй, основной атрибут, который определяет, каким элементам страницы соответствуют значения, введенные внутри кавычек. Например, такими элементами могут быть тексты, пароли, кнопки (как в нашем случае с калькулятором) и так далее. [4] X Источник информации
  • value="": эта команда определяет символы, которые отобразятся на элементах, заданных атрибутом «input type=». В случае калькулятора такими символами являются цифры (1-9) и математические операции (+, -, *, /, =). [5] X Источник информации
  • onClick="": этот синтаксис описывает событие, которое должно произойти при нажатии на кнопку. В случае калькулятора нужно сделать так, чтобы символ, отображенный на кнопке, понимался системой в буквальном смысле. Например, если на кнопке отображена цифра 6, в кавычках нужно ввести следующее значение: document.calculator.ans.value+='6'. [6] X Источник информации
  • br: этот тег инициирует разрыв строки на странице, поэтому все, что расположено после этого тега, будет отображено на следующей строке. [7] X Источник информации
  • /form, /body, and /html: это закрывающие теги, которые завершают процессы, запущенные соответствующими открывающими тегами. [8] X Источник информации

Часть 2 из 4:

Базовый HTML-код для создания калькулятора

Step 1 Скопируйте код, приведенный ниже.

Скопируйте код, приведенный ниже. Чтобы выделить код, переместите курсор в верхний левый угол окна, зажмите левую кнопку мыши и перетащите курсор в правый нижний угол окна; код будет выделен синим цветом. Затем нажмите «Command+C» (в Mac OS) или «Ctrl+C» (в Windows), чтобы скопировать код в буфер обмена.

html> head> title>HTML Calculatortitle> head> body bgcolor= "#000000" text= "gold"> form name="calculator" > input type="button" value="1" onClick="document.calculator.ans.value+='1'"> input type="button" value="2" onClick="document.calculator.ans.value+='2'"> input type="button" value="3" onClick="document.calculator.ans.value+='3'">br> input type="button" value="4" onClick="document.calculator.ans.value+='4'"> input type="button" value="5" onClick="document.calculator.ans.value+='5'"> input type="button" value="6" onClick="document.calculator.ans.value+='6'"> input type="button" value="7" onClick="document.calculator.ans.value+='7'">br> input type="button" value="8" onClick="document.calculator.ans.value+='8'"> input type="button" value="9" onClick="document.calculator.ans.value+='9'"> input type="button" value="-" onClick="document.calculator.ans.value+='-'"> input type="button" value="+" onClick="document.calculator.ans.value+='+'">br> input type="button" value="*" onClick="document.calculator.ans.value+='*'"> input type="button" value="/" onClick="document.calculator.ans.value+='/'"> input type="button" value="0" onClick="document.calculator.ans.value+='0'"> input type="reset" value="Reset"> input type="button" value=" na">onClick="document.calculator.ans.value=eval(document.calculator.ans.value)"> br>Solution is input type="textfield" name="ans" value=""> form> body> html> 

Как сделать простой калькулятор на HTML и Javascript

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

  

+

function func()

код сложения

До сих пор, нет сомнений. Но сейчас, мне хотелось бы заменить статичный знак плюса (+) четырьмя кнопками для всех базовых операций: сложения (+), вычитания (-), умножения (x), деления (:). Интерфейс и распределения кнопок умею вставить, но не успеваю создать функцию, которая изменяет оператор в переменной result в зависимости от избранной кнопки операции. Нужно ли делать отдельную функцию для каждой кнопки операторов? Или можно вставить всю программу в функцию кнопки выполнения ("равняется. ")? Вот код, написанный до сих пор:

  
function func()

разные операторы

Какой будет функция переменной result? Спасибо за помощь!

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

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