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

Solution to the conflict between nginx and backend port

question: When developing the Alice management sy...

Linux uses join -a1 to merge two files

To merge the following two files, merge them toge...

Detailed Analysis of Event Bubbling Mechanism in JavaScript

What is bubbling? There are three stages in DOM e...

Summary of MySQL Architecture Knowledge Points

1. Databases and database instances In the study ...

Example code and method of storing arrays in mysql

In many cases, arrays are often used when writing...

Self-study of MySql built-in functions knowledge points summary

String functions Check the ascii code value of th...

Some front-end basics (html, css) encountered in practice

1. The div css mouse hand shape is cursor:pointer;...

Example of how to build a Mysql cluster with docker

Docker basic instructions: Update Packages yum -y...

How to use IDEA to create a web project and publish it to tomcat

Table of contents Web Development 1. Overview of ...

Analysis of the solution to Nginx Session sharing problem

This article mainly introduces the solution to th...

How to implement scheduled backup of MySQL in Linux

In actual projects, the database needs to be back...