JavaScriptで電卓つくってみた

2018-05-25
0

生のHTML, JavaScriptを使って電卓を作ってみました。

0





ソースコード

<div id="calc">
  <p id="value">0</p>
  <button onclick="del()"><</button>
  <button onclick="c()">C</button>
  <button onclick="ac()">AC</button>
  <button onclick="push('/')">/</button>
  <br />
  <button onclick="push('7')">7</button>
  <button onclick="push('8')">8</button>
  <button onclick="push('9')">9</button>
  <button onclick="push('*')">*</button>
  <br />
  <button onclick="push('4')">4</button>
  <button onclick="push('5')">5</button>
  <button onclick="push('6')">6</button>
  <button onclick="push('-')">-</button>
  <br />
  <button onclick="push('1')">1</button>
  <button onclick="push('2')">2</button>
  <button onclick="push('3')">3</button>
  <button onclick="push('+')">+</button>
  <br />
  <button onclick="push('0')">0</button>
  <button onclick="push('00')">00</button>
  <button onclick="push('.')">.</button>
  <button onclick="eq()">=</button>
</div>
<script>
  var value = 0
  var symbol = ''
  var buf = ''
  var do_clear = false
  function push(str) {
    if (do_clear) {
      symbol = buf = ''
      do_clear = false
    }
    if (str === '+' || str === '-' || str === '*' || str === '/') {
      if (buf) eq(true)
      symbol = str
    } else {
      buf += str
      document.getElementById('value').innerText = buf
    }
  }
  function eq(do_clear_immediately = false) {
    if (symbol === '') {
      value = Number(buf)
    } else if (symbol === '+') {
      value += Number(buf)
    } else if (symbol === '-') {
      value -= Number(buf)
    } else if (symbol === '*') {
      value *= Number(buf)
    } else if (symbol === '/') {
      value /= Number(buf)
    }
    if (do_clear_immediately) symbol = buf = ''
    else do_clear = true
    document.getElementById('value').innerText = String(value)
  }
  function del() {
    if (do_clear) {
      symbol = ''
      buf = String(value)
      do_clear = false
    }
    buf = buf.substr(0, buf.length - 1)
    document.getElementById('value').innerText = buf ? buf : 0
  }
  function c() {
    buf = ''
    document.getElementById('value').innerText = '0'
  }
  function ac() {
    value = 0
    symbol = buf = ''
    document.getElementById('value').innerText = '0'
  }
</script>
<style>
  #value {
    font-size: 32px;
    text-align: right;
  }
  #calc button {
    width: 64px;
    height: 32px;
    margin: 2px;
  }
  #calc {
    border: 1px solid black;
    width: 320px;
    padding: 10px;
  }
</style>

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です