用JS怎样设计和实现一个简单的计算器
Admin 2022-06-22 群英技术资讯 884 次浏览
可以实现数据的加(+),减(-),乘(*),除(/),取余运算(%),以及实现数据的删除(Del)和清空功能(C)。
{ "navigationBarBackgroundColor": "#fff", "navigationBarTextStyle": "black", "navigationBarTitleText": "计算器" }
data:{ // data中只放置初始数据 num:"1", op:" "//记录运算符号 }
<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>
page{ display: flex; flex-direction: column;/*项目主轴的排列方向 */ height: 100%; } .result{ flex: 1;/*均匀分配元素*/ background: #f3f6fe; position: relative; } .result-num{ position: absolute;/*父相子绝*/ 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;/*里面的大view排列为垂直*/ 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%;/*宽度占比*/ border-bottom: 1rpx solid #ccc; border-right: 1rpx solid #ccc; box-sizing: border-box;/*加上边框的占比*/ display:flex; align-items: center; justify-content: center;/*两句加在一起是让文字居中*/ } .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; }
其中substr()函数中两个参数,第一个表示截取开始的位置,第二个表示截取的长度
delBtn:function(e){ var num=this.data.num.substr(0,this.data.num.length-1); this.setData({num:num===""? "0":num}) }
reSetBtn:function(e){ //全部变成初始状态 this.result=null; this.isClear=false; this.setData({num:"0",op:""}) }
data:{ // data中只放置初始数据 num:"1", op:" "//记录运算符号 }, result:null, isClear:false,//用来记录状态 numBtn:function(e){ var num =e.target.dataset.val//获取data-val中的值 //如果多次按0或者isClear为true,则将原来的数据清除,显示按的数字 if(this.data.num==='0'||this.isClear){ this.setData({num:num})//将获取的值给result this.isClear=false }else{ this.setData({num:this.data.num+num}) } }, opBtn:function(e){ var op=this.data.op;//先记录当前的op var num=Number(this.data.num);//获取当前的num数据 this.setData({op:e.target.dataset.val});//把按下的按钮给变量op if(this.isClear){//因为上面操作中有如果按了运算符,则isclear为true,在这里为了避免多次按加都会起作用,再return return } this.isClear=true;//当用户按了运算按钮,再按数字,则把原来的数字清空 if(this.result===null){ this.result=num; return } if(op==="+"){ this.result=this.result+num this.setData({num: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 }else if(op==="%"){ this.result=this.result%num } this.setData({num:this.result+""})//转为字符串类型 }, doBtn:function(e){ if(this.isClear){//表示上一个运算结束了,一开始就按.的话 this.setData({num:"0."}); this.isClear=false; return } //如果多按了. if(this.data.num.indexOf(".")>=0){ return } //正常数字后面按点 this.setData({num:this.data.num+"."}) },
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
JS中new的用法是什么,过程是怎样的?下列文章详细介绍了这方面的基础知识点,如果需要可以随时来借鉴参考,希望小编收集到的内容对你们有一定的帮助。
这篇文章主要为大家详细介绍了uni-app使用countdown插件实现倒计时,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
去除第一个元素的方法:1、利用“eq(0)”选择器和remove()方法,语法“$("元素").eq(0).remove()”;2、利用“:first”选择器和remove()方法,语法“$("元素:first").remove()”。
JavaScript原型模式是指什么?JavaScript原型模式是JavaScript设计模式中的一种,本文也主要介绍JavaScript原型模式的实现,接下来我们就一起来学习一下JavaScript原型模式吧。
这篇文章主要介绍了Vue自定义指令,文章从背景开始详细介绍Vue自定义指令的详细内容,随着Vue自定义指令的相关资料展开具体内容,需要的朋友可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008