0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-07-20

#計算機を作る

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

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

##完成物(スクリーンショット)
スクリーンショット 2020-07-16 20.45.08.png
上のテキスト入力欄に数字ボタンで入力するところまで出来た。

##サンプルコード

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>

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;
}
Javascript
caluculate.js
var number = document.getElementById('number-text');

function clickBtn(num) {
  number.value = number.value + num.value;
};

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

JavaScript を使った「電卓Webアプリ」の作り方を中3の息子に教えてみた!(プログラミング初心者向け)

JavaScriptで電卓プログラムを作成する方法を現役エンジニアが解説【初心者向け】

CSS関連

CSSで画像を縦に並べる方法を現役デザイナーが解説【初心者向け】

【CSS】widthとheightの解説!効かない時の解消法

右から左へのテキストHTML入力

js関連

要素をクリックで処理開始! JavaScriptのonclickでイベントを指定

JavaScriptのquerySelectorAllメソッドの使い方を現役エンジニアが解説【初心者向け】

エラー関連

JavaScriptで「Unexpected token」というエラーが出る原因と対処法を現役エンジニアが解説【初心者向け】

今後の機能に関連

テキストボックスに入力された値を取得する - JavaScript プログラミング

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

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

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

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

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

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

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

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?