前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue实现计算器功能

Vue实现计算器功能

作者头像
申霖
发布2020-12-02 10:03:58
2.9K1
发布2020-12-02 10:03:58
举报
文章被收录于专栏:小白程序猿小白程序猿

使用Vue+element来实现简单的计算器功能,JS版本连接:https://cloud.tencent.com/developer/article/1561080

直接上代码,目前程序没有校验小数点输入是否正确情况。

代码语言:javascript
复制
<template>
  <div id="Calculator">
    <el-row id="result">
      <el-input
        v-model="result"
        clearable>
      </el-input>
    </el-row>
    <el-row :gutter="10">
      <el-col :span="6"><div @click="getResult(7)" class="grid-content bg-purple">7</div></el-col>
      <el-col :span="6"><div @click="getResult(8)" class="grid-content bg-purple">8</div></el-col>
      <el-col :span="6"><div @click="getResult(9)" class="grid-content bg-purple">9</div></el-col>
      <el-col :span="6"><div @click="getResult('/')" class="grid-content bg-purple">/</div></el-col>
      <el-col :span="6"><div @click="getResult(4)" class="grid-content bg-purple">4</div></el-col>
      <el-col :span="6"><div @click="getResult(5)" class="grid-content bg-purple">5</div></el-col>
      <el-col :span="6"><div @click="getResult(6)" class="grid-content bg-purple">6</div></el-col>
      <el-col :span="6"><div @click="getResult('*')" class="grid-content bg-purple">*</div></el-col>
      <el-col :span="6"><div @click="getResult(1)" class="grid-content bg-purple">1</div></el-col>
      <el-col :span="6"><div @click="getResult(2)" class="grid-content bg-purple">2</div></el-col>
      <el-col :span="6"><div @click="getResult(3)" class="grid-content bg-purple">3</div></el-col>
      <el-col :span="6"><div @click="getResult('+')" class="grid-content bg-purple">+</div></el-col>
      <el-col :span="6"><div @click="getResult(0)" class="grid-content bg-purple">0</div></el-col>
      <el-col :span="6"><div @click="getResult('.')" class="grid-content bg-purple">.</div></el-col>
      <el-col :span="6"><div @click="getResult('=')" class="grid-content bg-purple">=</div></el-col>
      <el-col :span="6"><div @click="getResult('-')" class="grid-content bg-purple">-</div></el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  name: 'Calculator',
  data () {
    return {
      'result': ''
    }
  },
  methods: {
    sendMessage (message) {
      this.$message({
        message: message,
        type: 'warning'
      })
    },
    getResult (e) {
      // 不可以连续输入 小数点
      if (e === '.' && this.result.split('').reverse().join('').indexOf('.') === 0) {
        this.sendMessage('请输入正确的浮点数1')
        return false
      }
      // 如果第一次 输入的是 运算符号,则提示
      if (['+', '-', '*', '/', '%', '.'].indexOf(e) > -1 && this.result.length === 0) {
        this.sendMessage('请先输入数字')
        return false
      }
      // 如果第一次 输入的是 = 号,则直接返回
      if (e === '=' && this.result.length === 0) {
        return false
      }
      // 出现 = 号则表示已经执行过计算,需要清空
      if (this.result.indexOf('=') > -1) {
        this.result = ''
      }
      switch (e) {
        case '=':
          // eslint-disable-next-line no-eval
          this.result += '=' + eval(this.result)
          break
        default:
          this.result += e
      }
    }
  }
}
</script>

<style scoped>
  #result{
    margin-bottom: 10px;
  }
  .grid-content{
    text-align: center;
    height: 40px;
    border:solid 1px #e6e6e6;
    line-height: 40px;
    margin-bottom: 10px;
    font-weight: bold;
    border-radius: 5px;
    cursor: pointer;
  }
  .grid-content:hover{
    background-color: #f5f5f5;
  }
</style>

页面效果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档