今回はjavascriptを使って電卓のような計算を行う方法を紹介します。
javascriptで電卓を作る方法
html
まず計算結果部分と計算するときの数字や計算ボタンの構造をhtmlで作ります。
計算結果はresultクラスの要素で電卓部分はcalculator-boxクラスになります。
<div id="calculator">
<div class="result"><div id="display"></div></div>
<div class="calculator-box">
<button id="nine" class="num">9</button>
<button id="eight" class="num">8</button>
<button id="backspace">⌫</button>
<button id="six" class="num">6</button>
<button id="seven" class="num">7</button>
<button id="decimal">.</button>
<button id="four" class="num">4</button>
<button id="five" class="num">5</button>
<button id="divide">/</button>
<button id="two" class="num">2</button>
<button id="three" class="num">3</button>
<button id="multiply">*</button>
<button id="zero" class="num">0</button>
<button id="one" class="num">1</button>
<button id="subtract">-</button>
<button id="clear">C</button>
<button id="equals">=</button>
<button id="add">+</button>
</div>
</div>
javascript
htmlで基本の構造を作ったら次はjavascriptで計算の処理を作ります。
let display = document.getElementById("display");
let buttons = document.querySelectorAll("button");
let operator = "";
let operand1 = "";
let operand2 = "";
for (let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener("click", function() {
let value = this.innerHTML;
if (value === "C") {
display.innerHTML = "";
operator = "";
operand1 = "";
operand2 = "";
} else if (value === "⌫") {
let length = display.innerHTML.length;
display.innerHTML = display.innerHTML.slice(0, length - 1);
} else if (value === "+" || value === "-" || value === "*" || value === "/") {
operator = value;
operand1 = parseFloat(display.innerHTML);
display.innerHTML += value;
} else if (value === ".") {
if (display.innerHTML.indexOf(".") === -1) {
display.innerHTML += value;
}
} else if (value === "=") {
operand2 = parseFloat(display.innerHTML.split(operator)[1]);
if (operator === "+") {
display.innerHTML = operand1 + operand2;
} else if (operator === "-") {
display.innerHTML = operand1 - operand2;
} else if (operator === "*") {
display.innerHTML = operand1 * operand2;
} else if (operator === "/") {
display.innerHTML = operand1 / operand2;
}
} else {
display.innerHTML += value;
}
});
}
電卓のデザインを作る
上記で計算の処理や動きができましたね。
次は実際の電卓のようなデザインをcssで指定していきます。
css
#calculator{
background: #f6f6f6;
border: solid 1px #333;
border-radius: 5px;
padding: 10px;
}
.calculator-box{
display: flex;
flex-wrap: wrap;
}
.calculator-box button{
margin: 5px;
width: calc(100% / 3 - 10px);
border: solid 1px #888;
padding: 6px;
}
.result{
cursor: pointer;
background: #fff;
text-align: right;
margin-bottom: 10px;
height: 40px;
padding: 0 6px;
display: flex;
align-items: center;
justify-content: end;
}
.num{background: #fff;}
電卓サンプル
下記は電卓のサンプルになります。
コメント