前几日有人问我有没有计算器小程序案例,今天我们说下小程序计算器,然后就分享这样的小案例。希望对大家有所帮助
不多说了,直接上图!
快去拿个小板凳,坐等更多更新
注意:如若需要请联系微信dukaijie134
wxml
<viewclass="content"><viewclass="layout-top"><viewclass="screen">{{screenData}}</view></view><viewclass="layout-bottom"><viewclass="btnGroup"><viewclass="item orange"bindtap="clickBtn"id="{{idc}}">С</view><viewclass="item orange"bindtap="clickBtn"id="{{idb}}">←</view><!--<view class="item orange" bindtap="clickBtn" id="{{idt}}">+/-</view>--><viewclass="item orange iconBtn"bindtap="history"><icontype="{{iconType}}"color="{{iconColor}}"class="icon"size="25"/></view><viewclass="item orange"bindtap="clickBtn"id="{{idadd}}">+</view></view><viewclass="btnGroup"><viewclass="item blue"bindtap="clickBtn"id="{{id9}}">9</view><viewclass="item blue"bindtap="clickBtn"id="{{id8}}">8</view><viewclass="item blue"bindtap="clickBtn"id="{{id7}}">7</view><viewclass="item orange"bindtap="clickBtn"id="{{idj}}">-</view></view><viewclass="btnGroup"><viewclass="item blue"bindtap="clickBtn"id="{{id6}}">6</view><viewclass="item blue"bindtap="clickBtn"id="{{id5}}">5</view><viewclass="item blue"bindtap="clickBtn"id="{{id4}}">4</view><viewclass="item orange"bindtap="clickBtn"id="{{idx}}">×</view></view><viewclass="btnGroup"><viewclass="item blue"bindtap="clickBtn"id="{{id3}}">3</view><viewclass="item blue"bindtap="clickBtn"id="{{id2}}">2</view><viewclass="item blue"bindtap="clickBtn"id="{{id1}}">1</view><viewclass="item orange"bindtap="clickBtn"id="{{iddiv}}">÷</view></view><viewclass="btnGroup"><viewclass="item blue zero"bindtap="clickBtn"id="{{id0}}">0</view><viewclass="item blue"bindtap="clickBtn"id="{{idd}}">.</view><viewclass="item orange"bindtap="clickBtn"id="{{ide}}">=</view></view></view></view>
js
Page({data:{idb:"back",idc:"clear",idt:"toggle",idadd:"+",id9:"9",id8:"8",id7:"7",idj:"-",id6:"6",id5:"5",id4:"4",idx:"×",id3:"3",id2:"2",id1:"1",iddiv:"÷",id0:"0",idd:".",ide:"=",screenData:"0",operaSymbo:{"+":"+","-":"-","×":"*","÷":"/",".":"."},lastIsOperaSymbo:false,iconType:'waiting_circle',iconColor:'white',arr:[],logs:[]},onLoad:function(options){// 页面初始化 options为页面跳转所带来的参数},onReady:function(){// 页面渲染完成},onShow:function(){// 页面显示},onHide:function(){// 页面隐藏},onUnload:function(){// 页面关闭},clickBtn:function(event){varid=event.target.id;if(id==this.data.idb){//退格←vardata=this.data.screenData;if(data=="0"){return;}data=data.substring(0,data.length-1);if(data==""||data=="-"){data=0;}this.setData({"screenData":data});this.data.arr.pop();}elseif(id==this.data.idc){//清屏Cthis.setData({"screenData":"0"});this.data.arr.length=0;}elseif(id==this.data.idt){//正负号+/-vardata=this.data.screenData;if(data=="0"){return;}varfirstWord=data.charAt(0);if(data=="-"){data=data.substr(1);this.data.arr.shift();}else{data="-"+data;this.data.arr.unshift("-");}this.setData({"screenData":data});}elseif(id==this.data.ide){//等于=vardata=this.data.screenData;if(data=="0"){return;}//eval是js中window的一个方法,而微信页面的脚本逻辑在是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能再脚本中使用window,也无法在脚本中操作组件//var result = eval(newData);varlastWord=data.charAt(data.length);if(isNaN(lastWord)){return;}varnum="";varlastOperator="";vararr=this.data.arr;varoptarr=[];for(variinarr){if(isNaN(arr[i])==false||arr[i]==this.data.idd||arr[i]==this.data.idt){num+=arr[i];}else{lastOperator=arr[i];optarr.push(num);optarr.push(arr[i]);num="";}}optarr.push(Number(num));varresult=Number(optarr[0])*1.0;console.log(result);for(vari=1;i<optarr.length;i++){if(isNaN(optarr[i])){if(optarr[1]==this.data.idadd){result+=Number(optarr[i+1]);}elseif(optarr[1]==this.data.idj){result-=Number(optarr[i+1]);}elseif(optarr[1]==this.data.idx){result*=Number(optarr[i+1]);}elseif(optarr[1]==this.data.iddiv){result/=Number(optarr[i+1]);}}}//存储历史记录this.data.logs.push(data+'='+result);wx.setStorageSync("calclogs",this.data.logs);this.data.arr.length=0;this.data.arr.push(result);this.setData({"screenData":result+""});}else{if(this.data.operaSymbo[id]){//如果是符号+-*/if(this.data.lastIsOperaSymbo||this.data.screenData=="0"){return;}}varsd=this.data.screenData;vardata;if(sd==0){data=id;}else{data=sd+id;}this.setData({"screenData":data});this.data.arr.push(id);if(this.data.operaSymbo[id]){this.setData({"lastIsOperaSymbo":true});}else{this.setData({"lastIsOperaSymbo":false});}}},history:function(){wx.navigateTo({url:'../history/history'})}})
css
.content{height:100%;display:flex;flex-direction:column;align-items:center;background-color:#ccc;font-family:"Microsoft YaHei";overflow-x:hidden;}.layout-top{width:100%;margin-bottom:30rpx;}.layout-bottom{width:100%;}.screen{text-align:right;width:100%;line-height:260rpx;padding:010rpx;font-weight:bold;font-size:60px;box-sizing:border-box;border-top:1pxsolid#fff;}.btnGroup{display:flex;flex-direction:row;flex:1;width:100%;height:5rem;background-color:#fff;}.item{width:25%;display:flex;align-items:center;flex-direction:column;justify-content:center;margin-top:1px;margin-right:1px;}.item:active{background-color:#ff0000;}.zero{width:50%;}.orange{color:#fef4e9;background:#f78d1d;font-weight:bold;}.blue{color:#d9eef7;background-color:#0095cd;}.iconBtn{display:flex;}.icon{display:flex;align-items:center;width:100%;justify-content:center;}
版权声明:本文为qq_41938853原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。