js implements a simple calculator

js implements a simple calculator

Use native js to implement a simple calculator (with detailed comments) for your reference. The specific contents are as follows

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .divs {
        width: 500px;
        height: 600px;
        border: 1px solid #000000;
        margin: auto;
      }
      .divs > input {
        width: 460px;
        height: 45px;
        margin-left: 18px;
        margin-top: 10px;
        font-size: 30px;
        background-color: white;
        text-align: right;
      }
      .divs > div {
        width: 100px;
        height: 100px;
        float: left;
        border: 1px solid #000000;
        margin-left: 18px;
        margin-top: 25px;
        font-size: 40px;
        line-height: 100px;
        text-align: center;
        user-select: none;
      }
    </style>
  </head>
  <body>
    <div class="divs">
      <input type="text" value="0" id="input1" disabled />
      <div class="block">7</div>
      <div class="block">8</div>
      <div class="block">9</div>
      <div class="block">-</div>
      <div class="block">4</div>
      <div class="block">5</div>
      <div class="block">6</div>
      <div class="block">+</div>
      <div class="block">1</div>
      <div class="block">2</div>
      <div class="block">3</div>
      <div class="block">*</div>
      <div class="block">C</div>
      <div class="block">0</div>
      <div class="block">=</div>
      <div class="block">/</div>
</div>

js:

<script>
      // Get all elements with class name block var blocks = document.getElementsByClassName("block");
      // Get input
      var input = document.getElementById("input1");
      //Declare the first value var firstValue = 0,
        bool = false;
      //Declare operator var type;
      for (var i = 0; i < blocks.length; i++) {
       //Click on the i-th block
        blocks[i].onclick = function () {
          //This points to whoever is clicked. Here, this points to the element clicked each time console.log(this);
          //this.innerHTML displays the contents of the clicked div (such as 1,2,3,-,+)
          //Judge whether the clicked value is a number (either NaN or a number)
          if (!isNaN(this.innerHTML)) {      
            // bool is initially false. When bool is false, you can continue to input. When bool is true, the input is cleared to 0
            if (bool) {
              input.value = "0";
              bool = false;
            }
            // Add the value in input to the content clicked, and convert it to a number to remove the leading 0, and then convert it to a character input.value = Number(input.value + this.innerHTML).toString();
          } else {
           //Judge whether the click is + - * /if (this.innerHTML !== "C" && this.innerHTML !== "=") {
              //Save the first number to firstValue 
              firstValue = Number(input.value);
              //Store the operator in type
              type = this.innerHTML;
              //Reset the value in input to 0
              input.value = "0";
            } else if (this.innerHTML === "C") { //Judge the situation of clicking C//Reset all firstValue = 0;
              type = undefined;
              input.value = "0";
            } else { //Judge the situation of clicking = //Perform operations according to the type of operator switch (type) {
                case "+":
                  input.value = (firstValue + Number(input.value)).toString();
                  break;
                case "-":
                  input.value = (firstValue - Number(input.value)).toString();
                  break;
                case "*":
                  input.value = (firstValue * Number(input.value)).toString();
                  break;
                case "/":
                  // Reset input.value when the divisor is 0
                  if (Number(input.value) === 0) input.value = "0";
                  else
                    input.value = (firstValue / Number(input.value)).toString();
                  break;
              }
              //When bool is true, after clicking "=", when you enter again, input.value is 0
              bool = true;
            }
          }
        };
      }

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • js accurate countdown function sharing
  • Super accurate javascript method to verify ID number
  • js drag and drop table to realize content calculation
  • JS implementation of Apple calculator
  • JavaScript simulation calculator
  • JavaScript to achieve simple calculator function
  • How to calculate the number of lines of text in JavaScript
  • JavaScript classic case simple calculator
  • js precise calculation

<<:  Explanation of monitoring parameters in performance and sys schema in MySQL 5.7 (recommended)

>>:  Summary of solutions to common Linux problems

Recommend

Solve the problem of installing Theano on Ubuntu 19

Solution: Directly in the directory where you dow...

Detailed explanation of JavaScript program loop structure

Table of contents Select Structure Loop Structure...

Detailed explanation of downloading, installing and using nginx server

download http://nginx.org/en/download.html Unzip ...

What is jQuery used for? jQuery is actually a js framework

Introduction to jQuery The jQuery library can be ...

SQL merge operation of query results of tables with different columns

To query two different tables, you need to merge ...

How to build nfs service in ubuntu16.04

Introduction to NFS NFS (Network File System) is ...

How to use JSX to implement Carousel components (front-end componentization)

Before we use JSX to build a component system, le...

Understanding and using callback functions in JavaScript

Table of contents Overview What are callbacks or ...

Intellij IDEA quick implementation of Docker image deployment method steps

Table of contents 1. Docker enables remote access...

Make your website run fast

Does performance really matter? Performance is im...

Detailed steps for creating a Vue scaffolding project

vue scaffolding -> vue.cli Quickly create a la...

XHTML introductory tutorial: Application of table tags

<br />Table is an awkward tag in XHTML, so y...

Example of Vue routing listening to dynamically load the same page

Table of contents Scenario Analysis Development S...

A brief analysis of the differences between undo, redo and binlog in MySQL

Table of contents Preface 【undo log】 【redo log】 【...

Several ways to improve the readability of web pages

1. Use contrasting colours. The contrast here ref...