javascriptを使って簡単な計算機を作るpart3 入門者向け

#計算機を作る

##きっかけ
前回作った四則演算に加えて、実際にあるような計算機を作りたくなった。

##ざっくりとした構想
part2の「今後の構想」は、一旦忘れて計算機の見た目を作る
0~9までの数字ボタンでテキスト入力が行えるようにする
四則演算が行えるようにする。(未実装)

##完成物(スクリーンショット)
<img width="550" alt="スクリーンショット 2020-07-16 20.45.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662094/ca39660d-5360-fa36-6f48-e0c181feef5c.png">
上のテキスト入力欄に数字ボタンで入力するところまで出来た。

##サンプルコード

<details><summary>HTML</summary><div>

```html:caluculate.html


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="css/caluculate.css">
  <title>計算機</title>
</head>
<body>
  <div class="caluculate">
    <div class="wrapper">
      <input id="number-text" type="text">
    </div>
    <div id="btns">
      <div id="num-btns">
        <button value="7" name="num" onclick="clickBtn(this)">7</button>
        <button value="8" name="num" onclick="clickBtn(this)">8</button>
        <button value="9" name="num" onclick="clickBtn(this)">9</button>
        <button value="4" name="num" onclick="clickBtn(this)">4</button>
        <button value="5" name="num" onclick="clickBtn(this)">5</button>
        <button value="6" name="num" onclick="clickBtn(this)">6</button>
        <button value="1" name="num" onclick="clickBtn(this)">1</button>
        <button value="2" name="num" onclick="clickBtn(this)">2</button>
        <button value="3" name="num" onclick="clickBtn(this)">3</button>
        <button value="0" name="num" onclick="clickBtn(this)">0</button>
        <button id="eq" value="=" name="symbol">=</button>
      </div>
      
      <div id="symbol-btns">
        <button value="+" name="symbol">+</button>
        <button value="-" name="symbol">-</button>
        <button value="*" name="symbol">*</button>
        <button value="/" name="symbol">/</button>
      </div>
    </div>
  </div>

  <script src="js/caluculate.js"></script>
</body>
</html>

```
</div></details>

<details><summary>CSS</summary><div>

```css:caluculate.css
* {
  margin: 0;
  padding: 0;
}

.caluculate {
  margin: 100px auto;
}

.wrapper {
  width: 300px;
  margin: 0 auto;
}

.wrapper > #number-text {
  width: 293px;
  height: 54px;
  margin-bottom: 5px;
  font-size: 48px;
  /* 右から左へ入力するためのスタイル */
  text-align: right;
}

#btns {
  width: 300px;
  display: flex;
  margin: auto;
}

button {
  width: 65px;
  height: 57px;
}

#num-btns {
  margin: 5px;
}

#num-btns > button {
  margin-bottom: 5px;
  font-size: 24px;
}

#num-btns > button:last-child {
  width: 136px;
}

#symbol-btns {
  height: 228px;
  display: flex;
  flex-direction: column;
  display: inline-block;
  margin-top: 5px;
}

#symbol-btns > button {
  margin-bottom: 5px;
  height: 57px;
  font-size: 24px;
  text-align: center;
}
```
</div></details>

<details><summary>Javascript</summary><div>

```js:caluculate.js
var number = document.getElementById('number-text');

function clickBtn(num) {
  number.value = number.value + num.value;
};
```
</div></details>

##参考サイト
電卓の作り方など

[JavaScript を使った「電卓Webアプリ」の作り方を中３の息子に教えてみた！（プログラミング初心者向け）](https://qiita.com/yamazaki3104/items/b5351f589fb6644bf910)

[JavaScriptで電卓プログラムを作成する方法を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/21139)


CSS関連

[CSSで画像を縦に並べる方法を現役デザイナーが解説【初心者向け】](https://techacademy.jp/magazine/25612)

[【CSS】widthとheightの解説！効かない時の解消法](https://wunderstand.net/791/)

[右から左へのテキストHTML入力](https://www.it-swarm-ja.tech/ja/css/%E5%8F%B3%E3%81%8B%E3%82%89%E5%B7%A6%E3%81%B8%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88html%E5%85%A5%E5%8A%9B/940194679/)

js関連

[要素をクリックで処理開始! JavaScriptのonclickでイベントを指定](https://www.sejuku.net/blog/26119)

[JavaScriptのquerySelectorAllメソッドの使い方を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/26842)

エラー関連

[JavaScriptで「Unexpected token」というエラーが出る原因と対処法を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/32986)

今後の機能に関連

[テキストボックスに入力された値を取得する - JavaScript プログラミング](https://www.ipentec.com/document/javascript-get-textbox-value)

##今後の構想
・四則演算機能の追加
（最優先）

・クリアボタンと小数点ボタンの追加
（ボタン配置に苦戦すると思われる）

・クリアボタンでテキストボックスの値をリセットする機能

・入力できる文字列や文字数などの制限

・記号入力は、ボタン切り替え機能を使って計算したい。要は、iphoneの電卓を想定

テキストボックスには記号は入力せず、内部的に入力する。
記号に文字数を使うと、長い桁になったときに足りなくなるし、見辛そうなので。
（テキストボックス表示例：「1」→(+ボタンを押す)→「1」→(=ボタンを押す)→「2」）

・計算結果をリストに追加していく機能
（複数の計算があったとき用のメモ代わり）

・計算結果リストの編集ができる機能
(作れそうなら作ってみる)

ボタン切り替え機能と計算結果をリストに追加していく機能は、以前作ることができたので、今回のコードにも組み込んでいく。