计算器的简单实现

使用Vue.js完成简单的计算器

1.使用事件点击来完成计算(每次都需要点击计算按钮)

<!-- <div id="app">
    <input type="text" placeholder="请输入第一个数" v-model.number="number1">
    <select v-model="opt">
      <option>+</option>
      <option>-</option>
      <option>*</option>
      <option>/</option>
      <input type="text" placeholder="请输入第二个数" v-model.number="number2">
      <button @click="btn">计算</button>
      <br>
      {{number1}} {{opt}} {{number2}} = {{results}}
    </select>
  </div> -->
  
   // const vm = new Vue({
    //   el: "#app",
    //   data: {
    //     number1: 0,
    //     number2: 0,
    //     opt: "*",
    //     results: " "
    //   },
    //   methods: {
    //     btn() {
    //       switch (this.opt) {
    //         case "*":
    //           this.results = this.number1 * this.number2
    //           break;
    //         case "-":
    //           this.results = this.number1 - this.number2
    //           break;
    //         case "+":
    //           this.results = this.number1 + this.number2
    //           break;
    //         case "-":
    //           this.results = this.number1 - this.number2
    //           break;
    //         default:
    //           break;
    //       }
    //     }
    //   }
    // })

2.使用声明周期回调监听属性的变化


  <!-- <div id="app">
    <input type="text" placeholder="请输入第一个数" v-model.number="number1">
    <select v-model="opt">
      <option>+</option>
      <option>-</option>
      <option>*</option>
      <option>/</option>
      <input type="text" placeholder="请输入第二个数" v-model.number="number2">
      <button>计算</button>
      <br>
      {{number1}} {{opt}} {{number2}} = {{results}}
    </select>
  </div> -->
  
  
  // const vm = new Vue({
    //   el: "#app",
    //   data: {
    //     number1: 0,
    //     number2: 0,
    //     opt: "*",
    //     results: " "
    //   },
    //   mounted() {
    //     this.$watch('number1', (newValue) => {
    //       this.results = newValue + this.number2
    //     })
    //     this.$watch('number2', (newValue) => {
    //       this.results = newValue + this.number1
    //     })
    //     this.$watch('opt', (newValue) => {
    //       if (newValue === "+") this.results = this.number1 + this.number2
    //       if (newValue === "-") this.results = this.number1 - this.number2
    //       if (newValue === "*") this.results = this.number1 * this.number2
    //       if (newValue === "/") this.results = this.number1 / this.number2
    //     })
    //   }
    // })
  

3.使用计算属性监听属性的变化

div id="app">
    <input type="text" placeholder="请输入第一个数" v-model.number="number1">
    <select v-model="opt">
      <option>+</option>
      <option>-</option>
      <option>*</option>
      <option>/</option>
      <input type="text" placeholder="请输入第二个数" v-model.number="number2">
      <button>计算</button>
      <br>
      {{number1}} {{opt}} {{number2}} = {{results}}
    </select>
  </div>
  
  const vm = new Vue({
      el: "#app",
      data: {
        number1: 0,
        number2: 0,
        opt: "*",
        results: " "
      },
      computed: {
        getResult() {
          let value
          if (this.opt === "+") value = this.number1 + this.number2
          if (this.opt === "-") value = this.number1 - this.number2
          if (this.opt === "*") value = this.number1 * this.number2
          if (this.opt === "/") value = this.number1 / this.number2
          return value
        }
      }
    })

4.使用js原生实现相同效果

 <div id="app">
    <input class="a" type="text" placeholder="请输入第一个数">
    <select>
      <option>+</option>
      <option>-</option>
      <option>*</option>
      <option>/</option>
      <input class="aa" type="text" placeholder="请输入第二个数">
      <button>计算</button><br>
      您得到的结果为
    </select>
  </div>
  <script>
    const inputEl01 = document.querySelector(".a")
    const inputEl02 = document.querySelector(".aa")
    const buttonEl = document.querySelector("button")
    const selectEl = document.querySelector("select")
    const divEl = document.querySelector("#app")
    const text = document.createElement("span")
    divEl.append(text)
    buttonEl.onclick = jisuan
    inputEl01.onkeyup = jisuan
    inputEl02.onkeyup = jisuan
    selectEl.onchange = jisuan
    function jisuan() {
      if (selectEl.value === "+") {
        // console.log(Number(inputEl01.value) +  Number(inputEl02.value))
        text.innerHTML= ""
        text.innerHTML = Number(inputEl01.value) +  Number(inputEl02.value)
        // divEl.append(Number(inputEl01.value) +  Number(inputEl02.value))
      }
      if (selectEl.value === "-") {
        // console.log(Number(inputEl01.value) - Number(inputEl02.value))
        text.innerHTML= ""
        text.innerHTML = Number(inputEl01.value) -  Number(inputEl02.value)
        // divEl.append(Number(inputEl01.value) +  Number(inputEl02.value))
      }
      if (selectEl.value === "*") {
        // console.log(Number(inputEl01.value) * Number(inputEl02.value))
        text.innerHTML= ""
        text.innerHTML = Number(inputEl01.value) *  Number(inputEl02.value)
        // divEl.append(Number(inputEl01.value) *  Number(inputEl02.value))
      }
      if (selectEl.value === "/") {
        // console.log(Number(inputEl01.value) / Number(inputEl02.value))
        text.innerHTML= ""
        text.innerHTML = Number(inputEl01.value) /  Number(inputEl02.value)
        // divEl.append(Number(inputEl01.value) +  Number(inputEl02.value))
      }
    }
  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值