読者です 読者をやめる 読者になる 読者になる

久保清隆のブログ

ライフハック、健康、旅行など、役立つ情報を書きます。

JavaScriptで計算機を作った(改)

プログラミング

昨日のコードは名前の付け方とかダメダメだったので書き直した。
ついでに連続計算もできるようになった。
今回はコードの説明も書いた。
ちなみに見た目はこんな感じ。

<html>
<head>
<title>電卓</title>
<script language="JavaScript">
  var val = "";
  var stock = "";
  operator="";

function setValue(n){
  val += n;
  document.forms[0].elements[0].value=val;
}

function setOperator(n){
  stock=val;
  operator=n;
  val="";
}

function clear(){
  val="";
  stock="";
  document.forms[0].elements[0].value="";
}

function calc(){
  a = eval(val);
  b = eval(stock);
  val = eval('b'+operator+'a');
  document.forms[0].elements[0].value=val;
}
</script>
</head>
  • まずheadの中で関数を定義する。
    • setValue()関数で、最初の数字を入力する。

val += n は、val = val + n という意味。
valはとりあえず文字列にしておく。数値ではない。
なぜかというと、数字を連続でたたいた時、うしろに値が続いていく必要があるため、
文字列を足し続けてフォームに表示するようにしている。
文字列の足し算は例えば、"あか"+"おに" = "あかおに"となる。
同様に"1"+"2"="12"となる。
数値だと1+2=3となってしまう。

    • 次に、setOperator()で演算子(+,-,*,/)を押したときの動作を定義。

演算子が押されると、フォームに入っていた値は、stockに保存され、フォームの値は空になる。
operatorには、押した演算子が入る。

    • 次に再度、setValueで値を入力する。

calc()を押すと、stockに保存されていた値と最後に入れた値がoperatorで計算される。
evalとは文字列を数値に変換する関数。
従って、calc()での計算は、数値同士の計算になるので、
例えば、1+2=3という計算が行われる。


以下で、body内に計算機を表示させる。

<body>
<p>
<center>
<b><h2>電 卓</b></h2>
</center>
<p>
<center>
<table border="1" align="middle" cellspacing="2" bgColor="black">
  <tr>
    <td colspan="4" align="middle"><form><input size="27"></form></td>
  </tr>
  <tr>
    <td><A HREF="JavaScript:setValue('7')"><IMG SRC="calc/7.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setValue('8')"><IMG SRC="calc/8.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setValue('9')"><IMG SRC="calc/9.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setOperator('*')"><IMG SRC="calc/mult.gif" border="0"></A></td>
  </tr>
  <tr>
    <td><A HREF="JavaScript:setValue('4')"><IMG SRC="calc/4.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setValue('5')"><IMG SRC="calc/5.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setValue('6')"><IMG SRC="calc/6.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setOperator('/')"><IMG SRC="calc/div.gif" border="0"></A></td>
  </tr>
  <tr>
    <td><A HREF="JavaScript:setValue('1')"><IMG SRC="calc/1.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setValue('2')"><IMG SRC="calc/2.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setValue('3')"><IMG SRC="calc/3.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setOperator('+')"><IMG SRC="calc/plus.gif" border="0"></A></td>
  </tr>
  <tr>
    <td><A HREF="JavaScript:setValue('0')"><IMG SRC="calc/0.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setValue('.')"><IMG SRC="calc/dot.gif" border="0"></A></td>
    <td><A HREF="JavaScript:calc()"><IMG SRC="calc/equal.gif" border="0"></A></td>
    <td><A HREF="JavaScript:setOperator('-')"><IMG SRC="calc/minus.gif" border="0"></A></td>
  </tr>
  <tr>
    <td colspan="4" align="middle"><A HREF="JavaScript:clear()"><img src="calc/reset.jpg" border="0"></A></td>
  </tr>
</table>
</body>
</html>
  • body内に計算機を表示させる。

数字が押されたらsetValue()を、演算子が押されたらsetOperator()を、=が押されたらcalc()が実行されるようにプログラムされている。
これできちんと計算が実行される。




お読み頂きありがとうございます。
少しでもお役に立てたらクリックお願いします↓。
ブログランキング・にほんブログ村へにほんブログ村 IT技術ブログへにほんブログ村 IT技術ブログ プログラム・プログラマへ