1. Introduction to calculator functionsIt can realize data addition (+), subtraction (-), multiplication (*), division (/), remainder operation (%), as well as data deletion (Del) and clearing function (C). 2. Calculator page design1. Navigation bar{ "navigationBarBackgroundColor": "#fff", "navigationBarTextStyle": "black", "navigationBarTitleText": "Calculator" } 2. Data partdata:{ // 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 pagepage{ 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 results3. Functional implementation part1. Delete functionThe 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 functionreSetBtn:function(e){ //All become initial state this.result=null; this.isClear=false; this.setData({num:"0",op:""}) } 3. Other functionsdata:{ // 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:
|
<<: CSS3 analysis of the steps for making Douyin LOGO
>>: Docker enables multiple port mapping commands
The nginx configuration file is mainly divided in...
The MySQL built-in date function TIMESTAMPDIFF ca...
Customizing images using Dockerfile Image customi...
1. How to display the date on the right in the art...
Commonly used commands for Linux partitions: fdis...
Source of the problem: If the slave server is the...
What products do you want to mention? Recently, t...
I've been learning about stacking contexts re...
This article shares the specific code of vue+echa...
Table of contents Multiple conditional statements...
This article example shares the specific code for...
join() method: connects all elements in an array ...
1. Introduction The ls command is used to display...
Table of contents Preface Simulating data Merged ...
This article example shares the specific code of ...