ここまでくると幾らか慣れてきたと思います。カタチもちょっとだけ見えてきたと思います。ここから先は入り口と出口さえ合っていれば中はどうでもよくて、やり方もいろいろありますからこれまでのようにそのものな答えはありません。もちろん最適解はあると思いますが、それも考え方次第という面もあります。自由な発想で自由に組み込んでいきましょう。
あるボタンを押されたらどういう処理をしてどういう反応をすればいいのか。そんな事を考えながら作っていくといいですよ、きっと。
数字ボタンが押されると実行されるinputValue()にはどんな機能が求められるでしょうか。
Note
入力した数字は数値として保持するのではなく文字列として保持しておき、計算する前に数値に変換する方が複数桁、小数への対応が簡単です。
数値(num)を文字列に変換する場合は:
String(num);
文字列(str)を数値に変換する場合は:
Number(str);
を用います。
一時領域に値を保存するのと画面へ出力する処理は入力時にも必要ですし、計算結果を表示する際にも必要なので一つのメソッドにしておきます。
Note
$('#screen span').text('文字列');
とすると#screenの文字列を変更できます。もちろん他にも方法はあります。
演算子ボタンは押された状況により動作も変わります。
Note
演算子は私が勝手に決めた代替文字列で渡ってきます。+や-のままにして、eval()でゴニョゴニョというやり方もあろうかと思いますが、eval()はevilなんです、嫌いなんです。
保持している数値と演算子を使って四則演算を行います。
Warning
0での除算は御法度です。念のため。
計算を行って結果を表示します。ただし数値や演算子が入力されていないなど、条件に満たない場合は何もしません。
Warning
=を連続して入力する事で計算を継続する機能は今回対応しませんので、このタイミングで一旦演算子を消去してください。
入力中の数値や演算子を消去して未入力の状態にします。=とCの機能はシンプルですね。
メモリー計算を行います。メモリー計算とは別の保存領域へ任意のタイミングで加算や減算を行う仕組みです。例えば単価と個数がわかっている複数の商品の総価格を計算するみたいな事に使えます。
これで一通り動作するはずですが、実は入力するタイミングや順番によって気を付けねばならない場合が他にもあります。いろいろと試しておかしい挙動がないか確かめてみましょう。テストやデバッグも楽しみの一つですよ :-)