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

Detailed explanation of the basic usage of SSH's ssh-keygen command

SSH public key authentication is one of the SSH a...

Analysis of permissions required to run docker

Running Docker requires root privileges. To solve...

Multiple methods to modify MySQL root password (recommended)

Method 1: Use the SET PASSWORD command MySQL -u r...

CSS Paint API: A CSS-like Drawing Board

1. Use Canvas images as CSS background images The...

26 Commonly Forgotten CSS Tips

This is a collection of commonly used but easily ...

Detailed explanation of the process of building and running Docker containers

Simply pull the image, create a container and run...

Detailed tutorial on how to install MySQL 5.7.18 in Linux (CentOS 7) using YUM

The project needs to use MySQL. Since I had alway...

CentOS7 uses yum to install mysql 8.0.12

This article shares the detailed steps of install...

Summary of MySQL 8.0 memory-related parameters

Theoretically, the memory used by MySQL = global ...

Embed codes for several older players

The players we see on the web pages are nothing m...

Implementation of LNMP for separate deployment of Docker containers

1. Environmental Preparation The IP address of ea...

Vue uses v-model to encapsulate the entire process of el-pagination components

Use v-model to bind the paging information object...

CSS Tricks to Create Wave Effects

It has always been very difficult to achieve wave...