微信小程序计算器模拟后续
今天按着自己的思路又重打了一遍
wxml没什么说的,就是分块起名,显示数字和结果的作为屏幕,数字键盘一行四块
<view class="onTop">
<view class="screen">{{screenData}}</view>
</view>
<!--键盘操作-->
<view class="onBottom">
<view class="Row">
<view class="item blue" bindtap='onTap' id="{{clear}}">C</view>
<view class="item blue" bindtap='onTap' id="{{del}}">←</view>
<view class="item blue" bindtap='history' id="{{history}}">history</view>
<view class="item blue" bindtap='onTap' id="{{add}}">+</view>
</view>
<view class="Row">
<view class="item orange" bindtap='onTap' id="{{id9}}">9</view>
<view class="item orange" bindtap='onTap' id="{{id8}}">8</view>
<view class="item orange" bindtap='onTap' id="{{id7}}">7</view>
<view class="item blue" bindtap='onTap' id="{{minus}}">-</view>
</view>
<view class="Row">
<view class="item orange" bindtap='onTap' id="{{id6}}">6</view>
<view class="item orange" bindtap='onTap' id="{{id5}}">5</view>
<view class="item orange" bindtap='onTap' id="{{id4}}">4</view>
<view class="item blue" bindtap='onTap' id="{{multiply}}">*</view>
</view>
<view class="Row">
<view class="item orange" bindtap='onTap' id="{{id3}}">3</view>
<view class="item orange" bindtap='onTap' id="{{id2}}">2</view>
<view class="item orange" bindtap='onTap' id="{{id1}}">1</view>
<view class="item blue" bindtap='onTap' id="{{divided}}">/</view>
</view>
<view class="Row">
<view class="item zero orange" bindtap='onTap' id="{{id0}}">0</view>
<view class="item orange" bindtap='onTap' id="{{dot}}">.</view>
<view class="item blue" bindtap='onTap' id="{{equal}}">=</view>
</view>
</view>
wxss调调样式
有几个首次用的地方记录一下:
display:flex
Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。设为Flex布局以后,子元素的float
、clear
和vertical-align
属性将失效。
它即可以应用于容器中,也可以应用于行内元素。
flex-direction
1 .box { 2 flex-direction: row | row-reverse | column | column-reverse; 3 }
属性可选值的范围为row(默认)沿水平主轴由左向右排列、row-reverse沿水平主轴由右向左排列、column沿垂直主轴右上到下和column-reverse。
align-items: center;align-items 属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。
justify-content: center;justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。
然后是js
js分4种条件判断
首先获取输入的值,其次判断他的符号
1.如果输入的符号是删除,判断是否为0,反之,那就对字符串进行最后一位的删除,用substring截取到倒数第二位反映到前台显示,如果删没了就保持为0;同时在后台记录的数组中pop出最后一位;
if(id==this.data.del){//删除的实现
var data=this.data.screenData;
if(data=="0"){
return ;
}
data=data.substring(0,data.length-1);//删除data数组最后一位,实现删除
if(data==""||data=="-")
{
data=0;
}
this.setData({"screenData":data});
this.data.arr.pop();
2.如果输入的符号是清零,那就简单粗暴的将前台显示设置为0;同时后台存储的数组清空;
else if(id==this.data.clear){//清屏
this.setData({"screenData":0});
this.data.arr.length=0;}
3如果输入的是加减乘除和数字的话判断符号不能连续输入,将输入的数字和符号连续的存入数组arr中,然后在前台显示
else{//+-*/和数字输入
if(this.data.operaSym[id]){
if(this.data.lastIsOperaSym||this.data.screenData=="0"){//禁止多输入符号
return;
}
}
var sd=this.data.screenData;
var data;
if(sd==0){
data=id;
}
else{
data=sd+id;
}
this.setData({"screenData":data});
this.data.arr.push(id);
if (this.data.operaSym[id]) {//判断是否输入符号
this.setData({ "lastIsOperaSym": true });
} else {
this.setData({ "lastIsOperaSym": false });
}
}
4输入的是等号,在等号中对数据进行处理,还没改对,result值搞不出来,再调试一下
心得:之前没看懂arr哪里传的值还以为是默认传进去的,还跑到大佬的源码底下问人家,丢人的想捂脸跑
微信小程序计算器模拟后续的更多相关文章
- 微信小程序计算器后后续
改的眼睛都要瞎了,总算是知道问题出哪了 最后一段 在等号里面计算输入的数组,这个判断的主要操作是将输入的数据的数组进行数和符号的拆分然后再计算,把数按字符串输入数组,然后将数和符号进行拆分 ,最后通过 ...
- 微信小程序计算器Bug版=-=(笔记)
微信小程序计算器BUG版本 无APPID的测试号登录,先在app.json中更改路径,以及修改头部信息. 首先一个输入框字段用{{screenData}} 功能可以退格,清屏,正负号,正常操作加减乘除 ...
- (一)微信小程序之模拟调用后台接口踩过的坑
如下图标记的三个点 在调试过程中出现问题,特此记录. 1. 之前在浏览器测试接口习惯省略 http:// ,是因为浏览器默认有一个检测,在你输入的网址前面加http://,如果有就不加. 然而在微信小 ...
- wn-cli 像React组件开发一样来开发微信小程序
项目地址:wn-cli wn-cli wn-cli 像React组件开发一样来开发微信小程序 名字由来:wn -> weapp native 取第一个字母 Install npm install ...
- 近期热门微信小程序demo源码下载汇总
近期微信小程序demo源码下载汇总,乃小程序学习分析必备素材!点击标题即可下载: 即速应用首发!原创!电商商场Demo 优质微信小程序推荐 -秀人美女图 图片下载.滑动翻页 微信小程序 - 新词 GE ...
- 剖析简易计算器带你入门微信小程序开发
写在前面,但是重点在后面 这是教程,也不是教程. 可以先看Demo的操作动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCalc) 自从微 ...
- 获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级(微信小程序开发)
微信小程序开发时,Console 提示:获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级 错误原因: 直接调用这个方法依旧可以获取用户信息, 但是如果你之前没有点击过那个授权 ...
- 微信小程序开发(2) 计算器
在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发计算器功能. 本文主要分为两个部分,小程序主体部分及计算器业务页面部分 一.小程序主体部分 一个小程序主体部分由三个文件组成,必须放在项目的 ...
- 微信小程序-简易计算器
代码地址如下:http://www.demodashi.com/demo/14210.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
随机推荐
- lower_bound && upper_bound
用lower_bound进行二分查找 ●在从小到大排好序的基本类型数组上进行二分查找. 这是二分查找的一种版本,试图在已排序的[first,last)中寻找元素value.如果[first,last ...
- Linux命令 diff cmp patch
diff: 以行为单位进行比对 $ cat passwd | sed -e '4d' -e '6c no six line' > passwd.new $ cat -n passwd.new 1 ...
- Scaled Exponential Linear Unit
https://www.bilibili.com/video/av9770302/?p=11 Relu Leaky Relu Parametric Relu就是把leaky部分的斜率学出来,而不是指定 ...
- WordCount扩展与优化
合作者:201631062327,201631062128码云地址:https://gitee.com/LIUJIA6/WordCount3 一:项目说明 本次项目是在上次作业WorldCount的基 ...
- 记一次ADG备库归档目录满导致的延时处理
报错如下,原因是存放传过来的归档的目录+HWAREDODG满了,MRP进程无法应用归档,我在手动传了几个归档之后发现不是GAP,select * from V$ARCHIVE_GAP 显示没有GAP. ...
- 学习gstreamer
1. 对gst 的框架认识. 第一篇文章有结构图说明,清楚易懂:第二篇文章介绍了gst的简单使用 http://www.cnblogs.com/jingzhishen/p/3709639.html h ...
- Android ListVeiw控件(转载整理)
列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据 具体的将被映射的字符串,图片,或者基本组件. 根据列表 ...
- C#设计模式(8)——桥接模式(Bridge Pattern)(转)
一.引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视 ...
- [macOS] keychain的跳坑之旅!git拉取的权限问题
故事背景,svn与git各有长处,不过git大势所趋吧,那就搞搞.git的服务端,是基于phabricator搭建的,关于它的资料自行google就好了.其实之前运维已经搭好了phabricator了 ...
- webstorm中使用sass
最近由原来的sublime转为使用webstorm,用的不是很熟.我们在webstorm中使用sass 1.首先sass是基于ruby的.这个时候我们需要安装ruby. 2.安装成功后.我们需要去掉原 ...