問題1:電卓を作ろう!
今回は電卓のプラスマイナス機能を作っていきましょう!かなりボリュームが多いですが、重要なポイントをたくさん学べる題材なのでしっかり学んでください。ここで一気にレベルアップしましょう!
あらかじめエディタに書くコード
<div class="display"></div>
<div class="box">
<div class="switch" id="1">1</div>
<div class="switch" id="2">2</div>
<div class="switch" id="3">3</div>
<div class="switch" id="4">4</div>
<div class="switch" id="5">5</div>
<div class="switch" id="6">6</div>
<div class="switch" id="7">7</div>
<div class="switch" id="8">8</div>
<div class="switch" id="9">9</div>
<div class="switch" id="0">0</div>
<div class="reset">AC</div>
<div class="result">=</div>
</div>
<div class="signal">
<div class="calculation" id="plus">+</div>
<div class="calculation" id="minus">-</div>
<div class="calculation" id="multiply">×</div>
<div class="calculation" id="divide">÷</div>
</div>
¥HTML¥
.display{
border: 2px solid black;
width: 150px;
height: 50px;
margin-bottom: 10px;
line-height: 50px;
text-align: right;
overflow: hidden;
}
.box{
width: 150px;
height:200px;
border: 1px solid black;
display: flex;
flex-wrap: wrap;
}
.switch,.reset,.result{
width: 50px;
height: 50px;
line-height: 50px;
text-align: center;
border: 1px solid black;
box-sizing: border-box;
cursor: pointer;
}
.signal{
width: 200px;
height: 50px;
border: 1px solid black;
margin-top: 10px;
display: flex;
}
.calculation{
width: 50px;
height: 50px;
border: 1px solid black;
cursor: pointer;
text-align: center;
line-height: 50px;
font-size: 1.4em;
}
¥CSS¥
期待する画面
解答ソースコード
var saveNum;
$(function () {
$(".switch").click(function(){
var num=$(this).attr("id");
$(".display").append(num);
});
$(".calculation").click(function(){
saveNum=$(".display").text();
$(".display").text(");
$(".active").removeClass("active");
$(this).addClass("active");
});
$(".reset").click(function(){
saveNum=0;
$(".display").text(");
});
$(".result").click(function(){
var calculation=$(".active").attr("id");
switch (calculation) {
case "plus":plus();
break;
case "minus":minus();
break;
case "multiply":multiply();
break;
case "divide":divide();
break;
}
});
//ここからプラスが押された時の処理
function plus(){
var result = parseFloat(saveNum) + parseFloat($(".display").text());
$(".display").text(result);
}
//ここからマイナスが押された時の処理
function minus(){
var result = parseFloat(saveNum)-parseFloat($(".display").text());
$(".display").text(result);
}
//ここから掛るが押された時の処理
function multiply() {
var result = parseFloat(saveNum) * parseFloat($(".display").text());
$(".display").text(result);
}
//ここから割るが押された時の処理
function divide() {
var result = parseFloat(saveNum) / parseFloat($(".display").text());
$(".display").text(result);
}
});
¥JavaScript¥
完了にする!
活動記録をTweetする
次にcalculationがクリックされたとき演算が決められるのでまずdisplayに入っている数字を保存しておきます。そしてdisplayの中を空にします。最後にクリックされたcalculationにactiveというクラスを与えてます。しかしこのままだと重複が発生するためクラスを与える前に、activeクラスを持っているものからactiveを剥奪しています。
次にリセットボタンですが、リセットは保存していたsaveNumを0にし、displayの中を空にすれば完成なのでとても簡単です。
最後に結果を出力するにはactiveクラスを持っている要素のidを取得し、その値によって処理を変更します。後ろの方に書いてあるコードで四則演算を定義しています。