Detailed explanation of the process of realizing calculator function in javascript

Detailed explanation of the process of realizing calculator function in javascript

1. Introduction to calculator functions

It can realize data addition (+), subtraction (-), multiplication (*), division (/), remainder operation (%), as well as data deletion (Del) and clearing function (C).

2. Calculator page design

1. Navigation bar

{
  "navigationBarBackgroundColor": "#fff",
  "navigationBarTextStyle": "black",
  "navigationBarTitleText": "Calculator"
}

2. Data part

data:{
  // Only the initial data num: "1" is placed in data,
  op:" "//record operation symbol}

3. index.wxml layout page

<view class="result">
    <view class="result-num">{{num}}</view>
    <view class="result-op">{{op}}</view>
</view>
<view class="btns">
  <view>
    <view hover-class="bg" bindtap="reSetBtn">C</view>
    <view hover-class="bg" bindtap="delBtn">Del</view>
    <view hover-class="bg" bindtap="opBtn" data-val="%">%</view>
    <view hover-class="bg" bindtap="opBtn" data-val="/">/</view>
  </view>
  <view>
    <view hover-class="bg" bindtap="numBtn" data-val="7">7</view>
    <view hover-class="bg" bindtap="numBtn" data-val="8">8</view>
    <view hover-class="bg" bindtap="numBtn" data-val="9">9</view>
    <view hover-class="bg" bindtap="opBtn" data-val="*">*</view>
  </view>
  <view>
    <view hover-class="bg" bindtap="numBtn" data-val="4">4</view>
    <view hover-class="bg" bindtap="numBtn" data-val="5">5</view>
    <view hover-class="bg" bindtap="numBtn" data-val="6">6</view>
    <view hover-class="bg" bindtap="opBtn" data-val="-">-</view>
  </view>
  <view>
    <view hover-class="bg" bindtap="numBtn" data-val="1">1</view>
    <view hover-class="bg" bindtap="numBtn" data-val="2">2</view>
    <view hover-class="bg" bindtap="numBtn" data-val="3">3</view>
    <view hover-class="bg" bindtap="opBtn" data-val="+">+</view>
  </view>
  <view>
    <view hover-class="bg" bindtap="numBtn" data-val="0">0</view>
    <view hover-class="bg" bindtap="doBtn" data-val=".">.</view>
    <view hover-class="bg" bindtap="opBtn" data-val="=">=</view>
  
  </view>
</view>

4. index.css style page

page{
  display: flex;
  flex-direction: column;/*The direction of the main axis of the project*/
  height: 100%;
}
.result{
  flex: 1;/*Evenly distribute elements*/
  background: #f3f6fe;
  position: relative;
}
.result-num{
  position: absolute;/*Father's son is dead*/
  font-size: 20pt;
  bottom: 5vh;
  right: 3vw;
}
 
.result-op{
  position: absolute;
  font-size: 15pt;
  bottom: 1vh;
  right: 3vw;
}
.btns{
  flex: 1;
  display: flex;
  flex-direction: column;/*The large views inside are arranged vertically*/
  font-size: 17pt;
  border-top: 1rpx solid #ccc;
  border-left: 1rpx solid #ccc;
}
.btns>view{
  flex: 1;
  display: flex;
}
.btns>view>view{
  flex-basis: 25%;/*width ratio*/
  border-bottom: 1rpx solid #ccc;
  border-right: 1rpx solid #ccc;
  box-sizing: border-box;/*plus the border ratio*/
  display:flex;
  align-items: center;
  justify-content: center;/*The two sentences together make the text centered*/
}
.btns>view:last-child>view:first-child{
  flex-basis: 50%;
}
.btns>view:first-child>view:first-child{
  color:#f00;
}
.btns>view>view:last-child{
  color: #fcBe00;
}
.bg{
  background: #eee;
}

5. Operation results

3. Functional implementation part

1. Delete function

The substr() function has two parameters, the first one indicates the starting position of the interception, and the second one indicates the interception length.

delBtn:function(e){
    var num=this.data.num.substr(0,this.data.num.length-1);
    this.setData({num:num===""? "0":num})
  }

2. Clear function

 reSetBtn:function(e){
    //All become initial state this.result=null;
    this.isClear=false;
    this.setData({num:"0",op:""})
  }

3. Other functions

data:{
  // Only the initial data num: "1" is placed in data,
  op:" "//Record operation symbol},
  result:null,
  isClear:false, // used to record status numBtn:function(e){
    var num =e.target.dataset.val //Get the value in data-val //If you press 0 multiple times or isClear is true, the original data will be cleared and the pressed number will be displayed if(this.data.num==='0'||this.isClear){
      this.setData({num:num})//Give the obtained value to result
      this.isClear=false
    }else{
        this.setData({num:this.data.num+num})
    }
  },
 
  opBtn:function(e){
    var op=this.data.op; //Record the current op first
    var num=Number(this.data.num);//Get the current num data this.setData({op:e.target.dataset.val});//Give the pressed button to the variable op
    if(this.isClear){//Because in the above operation, if the operator is pressed, isclear is true. Here, in order to avoid multiple presses of the plus key, it will work, and then return
      return
    }
    this.isClear=true; //When the user presses the calculation button and then presses a number, the original number will be cleared if (this.result===null) {
      this.result=num;
      return
    }
    if(op==="+"){
      this.result=this.result+num
      this.setData({num:this.result})//Set the added result to num
    }else if(op==="-"){
      this.result=this.result-num
    }else if(op==="*"){
      this.result=this.result*num
    }else if(op==="/"){
      this.result=this.result/num
    }else if(op==="%"){
      this.result=this.result%num
    }
    this.setData({num:this.result+""})//Convert to string type},
  doBtn:function(e){
    if(this.isClear){//It means the last operation is over. If you press . at the beginning, this.setData({num:"0."});
      this.isClear=false;
      return
    }
    //If you press multiple times.
    if(this.data.num.indexOf(".")>=0){
      return
    }
    //Normal number followed by this.setData({num:this.data.num+"."})
  },

This is the end of this article about the detailed process of implementing calculator functions in javascript. For more relevant javascript calculator content, please search for previous articles on 123WORDPRESS.COM or continue to browse the related articles below. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Implementing a simple age calculator based on HTML+JS
  • Implementing a web calculator with native JavaScript
  • JavaScript implements simple calculator function
  • js version to realize calculator function
  • Native js to implement a simple calculator
  • Implementing a simple calculator with javascript
  • Writing a web calculator using javascript
  • JavaScript Example - Implementing a Calculator

<<:  CSS3 analysis of the steps for making Douyin LOGO

>>:  Docker enables multiple port mapping commands

Recommend

IE6 implements min-width

First of all, we know that this effect should be ...

Packetdrill's concise user guide

1. Packetdrill compilation and installation Sourc...

Using vue3 to implement counting function component encapsulation example

Table of contents Preface 1. The significance of ...

Let's learn about JavaScript object-oriented

Table of contents JavaScript prototype chain Obje...

Specific usage of fullpage.js full screen scrolling

1.fullpage.js Download address https://github.com...

Life cycle and hook functions in Vue

Table of contents 1. What is the life cycle 2. Th...

How to start/stop Tomcat server in Java

1. Project Structure 2.CallTomcat.java package co...

Vue element implements table adding, deleting and modifying data

This article shares the specific code of vue elem...

A brief discussion of 3 new features worth noting in TypeScript 3.7

Table of contents Preface Optional Chaining Nulli...

Several ways to hide Html elements

1. Use CSS Copy code The code is as follows: style...

Vue implements the countdown component for second kills

This article shares the specific code of Vue to i...

HTML reuse techniques

HTML reuse is a term that is rarely mentioned. Tod...

CSS and HTML and front-end technology layer diagram

The relationship between Javascript and DOM is ve...

Installation tutorial of MySQL 5.1 and 5.7 under Linux

The operating system for the following content is...