iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序实现简易的计算器功能
  • 841
分享到

微信小程序实现简易的计算器功能

2024-04-02 19:04:59 841人浏览 薄情痞子
摘要

一个初入IC的硅农,硬件编程经验3个月。偶然接触了微信小程序编程,然后自己写了一个计算器,希望得到改进意见。 功能: 1、计算 + - * /和%; 2、主要是当得出结果的时候,可以

一个初入IC的硅农,硬件编程经验3个月。偶然接触了微信小程序编程,然后自己写了一个计算器,希望得到改进意见。

功能:

1、计算 + - * /和%;

2、主要是当得出结果的时候,可以显示原来的数都是什么。用手机上的计算器都是一按等于号,我的两个操作数也没了,很烦。所以自己写的时候就在得到结果的时候操作数不变。

计算器样子就是下面这样子:

样子不太会设计,主要是js部分啦。

WXML代码

由于wxml的很多方法和属性我都还不太了解,所以有的设置方法可能显得繁琐。

<!--pages/caculator/caculator.wxml-->
<!-- 计算区 -->
<view class="caculatorArea">
  <!-- 显示数据与运算符 -->
  <view class="dataArea1">{{firstNum}}</view>
  <view class="dataArea2">{{operatorShow}}</view>
  <view class="dataArea3">{{secondNum}}</view>
  <!-- 显示结果 -->
  <view class="resultArea">result:   {{result}}</view>
</view>
<!-- 输入区 -->
<view class="inputArea">
<!-- 按键第一排 -->
  <view class="fstRaw">  
    <button class="clear" bindtap="clearEvent" data-value="C" >C</button>
    <button class="divide" bindtap="opEvent"  data-value="/">/</button>
    <button class="mutiply" bindtap="opEvent" data-value="*">*</button>
    <button class="back" bindtap="backEvent" data-value="←">←</button>
  </view>
  <!-- 按键第二排 -->
  <view class="secRaw">  
    <button class="seven" bindtap="numEvent" data-value="7">7</button>
    <button class="eight" bindtap="numEvent" data-value="8" >8</button>
    <button class="nine" bindtap="numEvent" data-value="9">9</button>
    <button class="minus" bindtap="opEvent" data-value="-">-</button>
  </view>
   <!-- 按键第三排 -->
   <view class="thdRaw">  
    <button class="four" bindtap="numEvent" data-value="4">4</button>
    <button class="five" bindtap="numEvent" data-value="5">5</button>
    <button class="six" bindtap="numEvent" data-value="6">6</button>
    <button class="plus" bindtap="opEvent" data-value="+">+</button>
  </view>
     <!-- 按键第四排 -->
  <view class="forRaw">   
    <button class="one" bindtap="numEvent" data-value="1">1</button>
    <button class="two" bindtap="numEvent"  data-value="2">2</button>
    <button class="three" bindtap="numEvent" data-value="3">3</button>
    <button class="equal" bindtap="opEvent" data-value="=">=</button>
  </view>
     <!-- 按键第五排 -->
  <view class="fifRaw">  
    <button class="abs" bindtap="opEvent" data-value="%">%</button>
    <button class="zero" bindtap="numEvent" data-value="0">0</button>
    <button class="dot" bindtap="dotEvent" data-value=".">.</button>
  </view>
</view>

js代码 

这个代码是真的让我快崩了,最后达到的效果,能跑就行。。由于软件的代码写的很少,所以在一些判断的时候显得很繁琐。比如如何区分目前输入的数字是属于第一个操作数还是第二个操作数(因为我想在两行显示数字,因此这就成了一个问题),我的办法是设置了一个flag,请问有没有知道更简单的方法的?

Page({
    data:{
      result:"",    
      firstNum:"", 
      secondNum:"",
      operatorUse:"",
      operatorShow:"",
    },
    var rst=""
    numFlag:true,
    optContinue:false,
    resultFlag:false,  //  结果标志位     1代表有结果,0代表没结果
    fstIsClear:true,      //  第一个数字是否清除标志位   1代表前面没数,0代表有数
    secIsClear:true,      //第二个数字是否清除的标志位   1代表前面没数,0代表有数
    numEvent(n){
        let numValue=n.currentTarget.dataset.value;
        if(this.resultFlag==true){         //如果得出了结果,并且按数字键的话,那么直接进行下一个计算,当前计算结束
            this.setData({
                firstNum:numValue,
                secondNum:"",
                secIsClear:true,
                operatorShow:"",
                operatorUse:"" 
            })
            this.resultFlag=false
        }else if(this.numFlag==true){     //如果此时没有按操作符,则归为第一个数   
            if(this.data.firstNum=="0"){  //假如第一个数现在是0,那么0不进行保存
                this.setData({
                    firstNum:numValue      
                  });
            }else{                 //如果第一个数不是0,那么进行拼接            
                this.setData({
                    firstNum:this.data.firstNum+numValue      
                  });
                  this.fstIsClear=false;
            }}else{                          //如果此时已经按过操作符,则归为第二个数
               if(this.data.secondNum=="0"){//假如第二个数现在是0,那么0不进行保存
                  this.setData({
                    secondNum:numValue       
                });
            }else{               
                this.setData({
                    secondNum:this.data.secondNum+numValue       
                });
                this.secIsClear=false;
            }
        }
    },
    opEvent(o){
        let optLast=this.data.operatorUse;
        let optCurrent=o.currentTarget.dataset.value;
        if(optCurrent!=null && this.data.secondNum=="" && this.data.fisrtdNum==""){
            this.numFlag=true; //都为空时,连续点击操作符不更换数字顺序
        }else if(optCurrent!=null && this.data.secondNum=="" && this.data.fisrtdNum!=""){
            if(optCurrent=="="){
                this.numFlag=true;
            }else{ 
            this.numFlag=false;//1有数2没数时,连续点击操作符,再次点击数字归为第二个
            }
        }
        else if(optCurrent!=null && this.data.secondNum!=""&& this.data.fisrtdNum!=""){ 
             if(optCurrent=="="){       
                 this.numFlag=!this.numFlag; //都不为空时,点击操作符后,数字绑定的顺序改变
             }else{
                this.numFlag=false;
             }
        }
        if(optLast=="="){
            this.setData({
                firstNum:rst, 
                secondNum:"",
                secIsClear:true,
                result:""   
              });
              this.resultFlag=false;
        }
        rst=Number(this.data.firstNum)     //将第一个数转换为数字类型
        var secNum=Number(this.data.secondNum)    //将第二个数转换为数字类型
 
        this.setData({
            operatorUse:optCurrent         //得到操作符,用于js判断
        });
        if(optCurrent=="="){               //得到操作符,用于wxml显示 
          if(optLast!="="){
            this.setData({
                operatorShow:optLast
            });  
        }else{
            this.setData({
                operatorShow:""
            });  
        }                 
        }else{
            this.setData({
                operatorShow:optCurrent
            })         
        }
        if(optLast=="+"){                             //依据操作符进行操作
            rst=rst+secNum;
        }else if(optLast=="-"){
            rst=rst-secNum ;   
        }else if(optLast=="*"){
            rst=rst*secNum;
        }else if(optLast=="/"){
            rst=rst/secNum;
        }else if(optLast=="%"){
            rst=rst%secNum;
        }      
        if(optCurrent=="="){          //当输入的操作符为=时,进行结果显示
            this.setData({
            result:rst
            })
            this.resultFlag=true
        }
        if(optCurrent!="=" && optLast!=""){
            this.setData({
                firstNum:rst, 
                secondNum:"",
                secIsClear:true,
                result:""   
              });
                this.resultFlag=false;  //表明此时有结果了
                this.optContinue=true;  //表明要进行连续计算了
        }
    },
    dotEvent(){
          if(this.numFlag==true){
              if(this.fstIsClear==true){
                this.fstIsClear==false 
                this.setData({
                    firstNum:"0."
                  });
              }else{                     //如果此前有数,则输入.为.
                if(this.data.firstNum.indexOf(".")>0){
                    return;
                }else{     
                    this.setData({
                    firstNum:this.data.firstNum+"."
                });
            }
            }            
          }else{
             if(this.secIsClear==true){ 
                this.secIsClear==false 
               this.setData({
                  secondNum:"0."
              })
          }else{
              if(this.data.secondNum.indexOf(".")>0){
                  return;
              }else{
                  this.setData({
                  secondNum:this.data.secondNum+"."
            })
        }
        }
    }
},
    backEvent(){
        var fstNumDel=0;
        var secNumDel=0;  
    if(this.resultFlag==true){
        return;
    }else{
      if(this.numFlag==true){
        fstNumDel=this.data.firstNum.substr(0,this.data.firstNum.length-1);
        this.setData({
            firstNum:fstNumDel
        });
        if(this.data.firstNum==""){
            this.fstIsClear=true;
        }
    }else{
        secNumDel=this.data.secondNum.substr(0,this.data.secondNum.length-1);
        this.setData({
            secondNum:secNumDel
        });
        if(this.data.secondNum==""){
            this.secIsClear=true;
        }
    }
    }
 
},
    clearEvent(){
      this.setData({
        firstNum:"",
        secondNum:"",
        operatorUse:"",
        operatorShow:"",
        result:""
      })
      this.numFlag=true;
      this.resultFlag=false;
      this.isClear=true;
      this.fstIsClear=true;
      this.secIsClear=true;
}
 
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 微信小程序实现简易的计算器功能

本文链接: https://www.lsjlt.com/news/167215.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序实现简易计算器功能
    本文实例为大家分享了微信小程序实现简易计算器的具体代码,供大家参考,具体内容如下 实现代码: <!--pages/computer.wxml--> <view c...
    99+
    2024-04-02
  • 微信小程序实现简易的计算器功能
    一个初入IC的硅农,硬件编程经验3个月。偶然接触了微信小程序编程,然后自己写了一个计算器,希望得到改进意见。 功能: 1、计算 + - * /和%; 2、主要是当得出结果的时候,可以...
    99+
    2024-04-02
  • 微信小程序实现简易计算器
    微信小程序之简易计算器,供大家参考,具体内容如下 一、介绍 1.中缀表达式 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术...
    99+
    2024-04-02
  • 微信小程序实现简单计算器功能
    微信小程序:简单计算器,供大家参考,具体内容如下 对于才接触小程序不久的人来说,想要直接上手一个实用性强的项目难度很大,想要快速熟悉小程序的使用,我们可以先尝试着做一个简单的计算器。...
    99+
    2024-04-02
  • 微信小程序实现简单的计算器功能
    本文实例为大家分享了微信小程序实现计算器功能的具体代码,供大家参考,具体内容如下 wxml <view class='content'> <input va...
    99+
    2024-04-02
  • 微信小程序————简易计算器
    1、计算器小程序     点击页面数字按键可以计算简单的加减乘除数据运算。 2、大概结构 页面显示   大概逻辑是当点第一次击数字键的时候要有个变量来存储这个点击的数,然后再来个记录点击运算符的变量,等要算的数全输入后,最后“...
    99+
    2023-10-26
    微信小程序 小程序
  • 微信小程序实现简易加法计算器
    本文实例为大家分享了微信小程序实现加法计算器的具体代码,供大家参考,具体内容如下 wxml <!--pages/cal/cal.wxml--> <view cla...
    99+
    2024-04-02
  • 微信小程序实现计算器小功能
    微信小程序现在越来越火爆了,我也看到很多在校大学生都在自学了,那些专门从事APP开发,网页开发的工作者更是看到了小程序的前景,在小程序领域也掺上一脚,本人也是自学小程序的,初期跟很多...
    99+
    2024-04-02
  • 微信小程序实现计算器功能
    本文实例为大家分享了微信小程序实现计算器功能的具体代码,供大家参考,具体内容如下 一、微信小程序开发工具界面 二、目录结构 第一次进到页面它的目录结构如下: 三、需要注意的问题 ...
    99+
    2024-04-02
  • 微信小程序如何实现简单的计算器功能
    这篇文章主要介绍微信小程序如何实现简单的计算器功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下wxml<view class='content'> &nb...
    99+
    2023-06-20
  • 用微信小程序实现计算器功能
    本文是用微信小程序写的一个简单的计算器,有兴趣的小伙伴可以了解一下。 页面部分 <view class='box'> <view class='txt...
    99+
    2024-04-02
  • 微信小程序如何实现计算器小功能
    这篇文章主要介绍微信小程序如何实现计算器小功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序现在越来越火爆了,我也看到很多在校大学生都在自学了,那些专门从事APP开发,网页开发的工作者更是看到了小程序的前景...
    99+
    2023-06-20
  • 微信小程序实现简单计算器
    微信小程序写的简单计算器,供大家参考,具体内容如下 jisaunqi.js // pages/jisuanqi/jisuanqi.js Page({ data: {...
    99+
    2024-04-02
  • C#实现简易计算器小功能
    本文实例为大家分享了C#实现简易计算器小功能的具体代码,供大家参考,具体内容如下 简易的登陆界面。 具有幻灯片效果。(picturebox time控件)计算器支持多位数,小数,括...
    99+
    2024-04-02
  • 微信小程序实现简单倒计时功能
    本文实例为大家分享了微信小程序实现简单倒计时的具体代码,供大家参考,具体内容如下 任务描述: 计时器 任务要求: 案例描述:设计一个实现倒计时功能的小程序,小程序运行后,首先显示空白...
    99+
    2024-04-02
  • C#如何实现简易计算器小功能
    这篇文章主要介绍C#如何实现简易计算器小功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下简易的登陆界面。具有幻灯片效果。(picturebox time控件)计算器支持多位数,小数,括号的运算。音乐是一...
    99+
    2023-06-29
  • 微信小程序如何实现简单倒计时功能
    本篇内容介绍了“微信小程序如何实现简单倒计时功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!任务描述:计时器任务要求:案例描述:设计一个实...
    99+
    2023-06-30
  • 微信小程序中如何实现一个计算器功能
    这期内容当中小编将会给大家带来有关微信小程序中如何实现一个计算器功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。index.wxml<view class="content&q...
    99+
    2023-06-20
  • 微信小程序中怎么实现一个计算器功能
    微信小程序中怎么实现一个计算器功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。目录结构第一次进到页面它的目录结构如下:需要注意的问题(1)添加的新页面文件,都...
    99+
    2023-06-20
  • 微信小程序实现计算器功能的代码怎么写
    本篇内容介绍了“微信小程序实现计算器功能的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!具体代码如下:wxml<view&n...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作