As a beginner developer building a Web calculator is a good project. If you have a knowledge on Javascript you can easily create a Calculator with Javascript. In this post we will cover UI interaction and Javascript functionality to handle mathematical operations.
This Example we will cover
- HTML UI
- CSS
- Javascript Math Operations
Prerequisites
To create this simple Javascript Calculator yo should know
- Basic HTML and Javascript
- A Text Editor (Notepad, Notepad++...)
Let's design the Calculator
As a developer to do calculator we should be clear about math operations like, addition, substration, multiplication, division, and how to handle decimalvalues in javascript.
Let create 3 folders to separate html,css and javascript files, this way we can manage our files easily.
Let's create a html file under html folder and add basic code like below
<!doctype html>
<html lang="pt-br">
<head>
<title>Simple Calculator Example</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fite=no">
<link rel="stylesheet" href="bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col d-flex justify-content-center">
<br />
<div class="calculadora">
<input type="text" class="form-control result" placeholder="0" disabled="disabled" />
<div class="row">
<button type="button" class="btn btn-dark btn-lg clear font-weight-light">C</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">/</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">x</button>
</div>
<div class="row">
<button type="button" class="btn btn-dark btn-lg font-weight-light">7</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">8</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">9</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">-</button>
</div>
<div class="row">
<button type="button" class="btn btn-dark btn-lg font-weight-light">4</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">5</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">6</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">+</button>
</div>
<div class="row">
<button type="button" class="btn btn-dark btn-lg font-weight-light">1</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">2</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">3</button>
<button type="button" class="btn btn-dark btn-lg enter">=</button>
</div>
<div class="row" style="margin-top: -60px">
<button type="button" class="btn btn-dark zero btn-lg font-weight-light">0</button>
<button type="button" class="btn btn-dark btn-lg font-weight-light">.</button>
</div>
</div>
</div>
</div>
</div>
</body>
<html>
|
Now the above code will give below output with math symbols and number and one text editor to display result.
Add Style to design the Calculator UI
Now create a css file under css folder and add below code
body {
background-color: #51787A;
}
.calculadora {
margin-top: 100px;
border: solid 1px #000;
padding: 20px;
background:linear-gradient(#3a1c71, #D76D77);
border-radius: 1rem;
box-shadow: 2px 3px 2px #000;
}
.btn {
width: 60px;
height: 50px;
margin: 5px;
box-shadow: 1px 1px 1px #000;
}
.clear {
width: 130px;
}
.enter {
height: 110px;
}
.zero {
width: 130px;
}
.result {
text-align: right;
font-size: 20px;
margin-top: 10px;
margin-bottom: 20px;
border: solid 1px #000;
box-shadow: 1px 1px 1px #000;
}
|
Add external css to html file
To add external css files into html page we will use <link/> atrribute. Now lets add these external css files to our html page
Under head tag add below code
<link rel="stylesheet" href="../css/bootstrap.min.css">
<link rel="stylesheet" href="../css/css.css">
|
Now our UI will be looks like below
Add Javascript functionality to work Math operations on Calculator
Now create a javascript file inside js folder and add below code
function calcular (type,value) {
const resul = document.getElementById('result');
if ( type === 'equation') {
if (value === 'c') {
resul.value = '';
}
if (value === '+' || value === '-' || value === '*' || value === '/' || value === '.') {
resul.value += value;
}
if (value === '=') {
const value_campo = resul.value;
const calc = eval(value_campo);
document.getElementById('result').value = calc;
}
} else if (type === 'value' ) {
resul.value += value;
}
}
|
This function takes two parameters type and value.
type: will check the type of math operator. Based on this operator we will add our math logic like addition, subtraction...
value: this is the value which number we click on the calculator ui
Add this external Javascript file to html
To add external Javascript files to html page we will use script tag and set the js file path to src attribute
<script type="text/javascript" src="../js/operations.js"></script>
|
Add this javascript function to respected buttons.
We will update each button with add this javascript function under button onclick event
onclick="calcular('value', 1)"
|
After adding the onlick event of the button all button codes will be like below
<div class="calculadora">
<input id="result" type="text" class="form-control result" placeholder="0" disabled="disabled" />
<div class="row">
<button onclick="calcular('equation', 'c');" type="button" class="btn btn-dark btn-lg clear font-weight-light">C</button>
<button onclick="calcular('equation', '/');" type="button" class="btn btn-dark btn-lg font-weight-light">/</button>
<button onclick="calcular('equation', '*');" type="button" class="btn btn-dark btn-lg font-weight-light">x</button>
</div>
<div class="row">
<button onclick="calcular('value', 7)" type="button" class="btn btn-dark btn-lg font-weight-light">7</button>
<button onclick="calcular('value', 8)" type="button" class="btn btn-dark btn-lg font-weight-light">8</button>
<button onclick="calcular('value', 9)" type="button" class="btn btn-dark btn-lg font-weight-light">9</button>
<button onclick="calcular('equation', '-')" type="button" class="btn btn-dark btn-lg font-weight-light">-</button>
</div>
<div class="row">
<button onclick="calcular('value', 4)" type="button" class="btn btn-dark btn-lg font-weight-light">4</button>
<button onclick="calcular('value', 5)" type="button" class="btn btn-dark btn-lg font-weight-light">5</button>
<button onclick="calcular('value', 6)" type="button" class="btn btn-dark btn-lg font-weight-light">6</button>
<button onclick="calcular('equation', '+')" type="button" class="btn btn-dark btn-lg font-weight-light">+</button>
</div>
<div class="row">
<button onclick="calcular('value', 1)" type="button" class="btn btn-dark btn-lg font-weight-light">1</button>
<button onclick="calcular('value', 2)" type="button" class="btn btn-dark btn-lg font-weight-light">2</button>
<button onclick="calcular('value', 3)" type="button" class="btn btn-dark btn-lg font-weight-light">3</button>
<button onclick="calcular('equation', '=')" type="button" class="btn btn-dark btn-lg enter">=</button>
</div>
<div class="row" style="margin-top: -60px">
<button onclick="calcular('value', 0)" type="button" class="btn btn-dark zero btn-lg font-weight-light">0</button>
<button onclick="calcular('equation', '.')" type="button" class="btn btn-dark btn-lg font-weight-light">.</button>
</div>
</div>
|
Now lets open the html file on your browser and you can do math operations with your own calculator which is created with Javascript.
Complete HTML file will look like below
<!doctype html>
<html lang="pt-br">
<head>
<title>Simple Calculator Example</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fite=no">
<link rel="stylesheet" href="../css/bootstrap.min.css">
<link rel="stylesheet" href="../css/css.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col d-flex justify-content-center">
<br />
<div class="calculadora">
<input id="result" type="text" class="form-control result" placeholder="0" disabled="disabled" />
<div class="row">
<button onclick="calcular('equation', 'c');" type="button" class="btn btn-dark btn-lg clear font-weight-light">C</button>
<button onclick="calcular('equation', '/');" type="button" class="btn btn-dark btn-lg font-weight-light">/</button>
<button onclick="calcular('equation', '*');" type="button" class="btn btn-dark btn-lg font-weight-light">x</button>
</div>
<div class="row">
<button onclick="calcular('value', 7)" type="button" class="btn btn-dark btn-lg font-weight-light">7</button>
<button onclick="calcular('value', 8)" type="button" class="btn btn-dark btn-lg font-weight-light">8</button>
<button onclick="calcular('value', 9)" type="button" class="btn btn-dark btn-lg font-weight-light">9</button>
<button onclick="calcular('equation', '-')" type="button" class="btn btn-dark btn-lg font-weight-light">-</button>
</div>
<div class="row">
<button onclick="calcular('value', 4)" type="button" class="btn btn-dark btn-lg font-weight-light">4</button>
<button onclick="calcular('value', 5)" type="button" class="btn btn-dark btn-lg font-weight-light">5</button>
<button onclick="calcular('value', 6)" type="button" class="btn btn-dark btn-lg font-weight-light">6</button>
<button onclick="calcular('equation', '+')" type="button" class="btn btn-dark btn-lg font-weight-light">+</button>
</div>
<div class="row">
<button onclick="calcular('value', 1)" type="button" class="btn btn-dark btn-lg font-weight-light">1</button>
<button onclick="calcular('value', 2)" type="button" class="btn btn-dark btn-lg font-weight-light">2</button>
<button onclick="calcular('value', 3)" type="button" class="btn btn-dark btn-lg font-weight-light">3</button>
<button onclick="calcular('equation', '=')" type="button" class="btn btn-dark btn-lg enter">=</button>
</div>
<div class="row" style="margin-top: -60px">
<button onclick="calcular('value', 0)" type="button" class="btn btn-dark zero btn-lg font-weight-light">0</button>
<button onclick="calcular('equation', '.')" type="button" class="btn btn-dark btn-lg font-weight-light">.</button>
</div>
</div>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="../js/operations.js"></script>
</html>
|