微信小程序-计算器

初次尝试小程序,简单的实现计算器功能

首先:WXML结构

<view class="content">
<view class="show-con">
<view class="result">{{msg}}</view>
</view>
<view class="btn-group">
<view class="item" bindtap='getContent' id="{{id1}}">AC</view>
<view class="item" bindtap='getContent' id="{{id2}}">+/-</view>
<view class="item" bindtap='getContent' id="{{id3}}">%</view>
<view class="item orange" bindtap='getContent' id="{{id4}}">÷</view>
</view>
<view class="btn-group">
<view class="item" bindtap='getContent' id="{{id5}}">7</view>
<view class="item" bindtap='getContent' id="{{id6}}">8</view>
<view class="item" bindtap='getContent' id="{{id7}}">9</view>
<view class="item orange" bindtap='getContent' id="{{id8}}">x</view>
</view>
<view class="btn-group">
<view class="item" bindtap='getContent' id="{{id9}}">4</view>
<view class="item" bindtap='getContent' id="{{id10}}">5</view>
<view class="item" bindtap='getContent' id="{{id11}}">6</view>
<view class="item orange" bindtap='getContent' id="{{id12}}">-</view>
</view>
<view class="btn-group">
<view class="item" bindtap='getContent' id="{{id13}}">1</view>
<view class="item" bindtap='getContent'id="{{id14}}">2</view>
<view class="item" bindtap='getContent'id="{{id15}}">3</view>
<view class="item orange" bindtap='getContent' id="{{id16}}">+</view>
</view>
<view class="btn-group">
<view class="item zero" bindtap='getContent' id="{{id17}}">0</view>
<view class="item" bindtap='getContent' id="{{id18}}">.</view>
<view class="item orange" bindtap='getContent' id="{{id19}}">=</view>
</view>
</view>

其次,WXSS  css表现

/* pages/new/new.wxss */
.content{
width:100%;
display: flex;
flex-direction: column;
align-items: item;
box-sizing: border-box
}
.show-con{
display: flex;
flex-direction: row;
height: 200rpx;
background: #000;
border-radius: 10rpx
}
.result{
height: 300rpx;
width: 100%;
color: #fff;
font-size: 40rpx;
text-align: right;
line-height: 300rpx;
}
.btn-group{
display: flex;
flex-direction: row;
width: 700rpx;
margin:10rpx 20rpx 0rpx 20rpx
}
.item{
display: inline-block;
width: 160rpx;
height: 160rpx;
background: #ccc;
border-radius: 50%;
text-align: center;
line-height: 160rpx;
margin: 8.75rpx
}
.orange{
color:#fff;
background:#ffd700;
font-weight: bold
}
.zero{
width: 337.5rpx;
border-radius: 80rpx
}

最后,js交互

const util = require('../../utils/util.js')
const rpn = require('../../utils/rpn.js')
Page({
data:{
msg:'0',
id1:'AC',
id2:'+/-',
id3:'%',
id4:'÷',
id5:'7',
id6:'8',
id7:'9',
id8:'*',
id9:'4',
id10:'5',
id11:'6',
id12:'-',
id13:'1',
id14:'2',
id15:'3',
id16:'+',
id17:'0',
id18:'.',
id19:'=',
},
getContent:function(e){
var id = e.target.id;
var initData = this.data.msg;
if (id == this.data.id1){
this.setData({
msg: 0
});
}else if( id == this.data.id2){//取反
if (initData == "0"){
return
}
var firstWord = initData.charAt(0);
if (firstWord == "-"){
initData = initData.substr(1);
}else{
initData = "-" + initData;
}
this.setData({
msg: initData
});
}else if(id == this.data.id3){//百分比运算
if (initData == 0){
return;
}else{
initData = initData/100;
this.setData({
msg: initData
});
}
}else if( id == this.data.id19){
//如果只有一个数字且是0,则直接返回
if( initData == 0){
return;
}
//判断最后一位是否为是有效数字
var lastWord = initData.charAt(initData.length - 1);
if (isNaN(lastWord)) {
return;
}
var calData = rpn.calCommonExp(initData);
console.log(calData);
this.setData({
msg: calData
});
}
else{
var total;
if (initData == 0){
total = id
}
else{
total = initData + id;
}
this.setData({
msg: total
});
}
}
})

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值