今天按着自己的思路又重打了一遍

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布局以后,子元素的floatclearvertical-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哪里传的值还以为是默认传进去的,还跑到大佬的源码底下问人家,丢人的想捂脸跑

微信小程序计算器模拟后续的更多相关文章

  1. 微信小程序计算器后后续

    改的眼睛都要瞎了,总算是知道问题出哪了 最后一段 在等号里面计算输入的数组,这个判断的主要操作是将输入的数据的数组进行数和符号的拆分然后再计算,把数按字符串输入数组,然后将数和符号进行拆分 ,最后通过 ...

  2. 微信小程序计算器Bug版=-=(笔记)

    微信小程序计算器BUG版本 无APPID的测试号登录,先在app.json中更改路径,以及修改头部信息. 首先一个输入框字段用{{screenData}} 功能可以退格,清屏,正负号,正常操作加减乘除 ...

  3. (一)微信小程序之模拟调用后台接口踩过的坑

    如下图标记的三个点 在调试过程中出现问题,特此记录. 1. 之前在浏览器测试接口习惯省略 http:// ,是因为浏览器默认有一个检测,在你输入的网址前面加http://,如果有就不加. 然而在微信小 ...

  4. wn-cli 像React组件开发一样来开发微信小程序

    项目地址:wn-cli wn-cli wn-cli 像React组件开发一样来开发微信小程序 名字由来:wn -> weapp native 取第一个字母 Install npm install ...

  5. 近期热门微信小程序demo源码下载汇总

    近期微信小程序demo源码下载汇总,乃小程序学习分析必备素材!点击标题即可下载: 即速应用首发!原创!电商商场Demo 优质微信小程序推荐 -秀人美女图 图片下载.滑动翻页 微信小程序 - 新词 GE ...

  6. 剖析简易计算器带你入门微信小程序开发

    写在前面,但是重点在后面 这是教程,也不是教程. 可以先看Demo的操作动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCalc) 自从微 ...

  7. 获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级(微信小程序开发)

    微信小程序开发时,Console 提示:获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级 错误原因: 直接调用这个方法依旧可以获取用户信息, 但是如果你之前没有点击过那个授权 ...

  8. 微信小程序开发(2) 计算器

    在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发计算器功能. 本文主要分为两个部分,小程序主体部分及计算器业务页面部分 一.小程序主体部分 一个小程序主体部分由三个文件组成,必须放在项目的 ...

  9. 微信小程序-简易计算器

    代码地址如下:http://www.demodashi.com/demo/14210.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

随机推荐

  1. upstream模块介绍

    upstream模块介绍 Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass.fastcgi_pass.memcached_pa ...

  2. layer[申明:来源于网络]

    layer[申明:来源于网络] 地址:http://layer.layui.com/

  3. SIM800C 连接服务器

    AT+CIPSTART=TCP,域名,端口号 OK 只返回OK,这种情况,说明域名的服务器出错了,OK表示格式正确,但是实际上的TCP是没有连接上的. 测试库服务器出错的时候,就是这种情况 实际连上了 ...

  4. python练习题-day8

    1.有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读出来并打印. wi ...

  5. CoreData 执行executefetchrequest卡死解决办法

    在大量使用GCD和block以后发现程序会卡死在executefetchrequest执行. 反复测试无果.添加锁也无效.想来想去没发现问题. 容忍了就当人品问题.2天以后实在忍无可忍. 替换perf ...

  6. Web 开发技术文档大全

    https://developer.mozilla.org/zh-CN/docs/Web 基础 HTML CSS HTTP 脚本 JavaScript Web API 事件 Web Component ...

  7. python框架之Flask(1)-Flask初使用

    Flask是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Socket 服务端,其用于接收 http 请求 ...

  8. Python压缩指定文件及文件夹为zip

    Python压缩指定的文件及文件夹为.zip 代码: def zipDir(dirpath,outFullName): """ 压缩指定文件夹 :param dirpat ...

  9. How do you explain Machine Learning and Data Mining to non Computer Science people?

    How do you explain Machine Learning and Data Mining to non Computer Science people?   Pararth Shah, ...

  10. fiddler学习总结--fiddler抓包篡改数据请求

    操作步骤: 步骤一.在fiddler的命令行中输入需要拦截的地址:bpu https://www.baidu.com 记得按一下回车键 步骤二.在百度搜索栏中,输入“火影忍者”,页面会一直处于加载的状 ...