首页 > 其他分享 >用三种方式实现简易及计算器

用三种方式实现简易及计算器

时间:2023-04-02 13:44:48浏览次数:33  
标签:num4 val num3 res1 else 简易 三种 sign1 计算器

目标:用三种方式实现简易的计算器(计算属性,监听器,方法)

  1.创建html,导入vue,实例化vue对象。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="js/vue.js"></script>
    </head>
    <body>

    <script>
        const vm = new Vue({})

  2.在body标签下创建个input标签,计算符用下拉菜单来表示。

此处的v-model.number实现双向绑定且让后边的数字当成数字处理,否则会当成字符串处理,

 

placeholder="请输入第一个数",让输入框在未输入数据时显示“请输入第一个数字”,

 

后续的两种方式的计算器也都是用类似于这种形式。

此处为用计算属性实现的html部分,结尾的res为计算属性。

        <input type="text" placeholder="请输入第一个数" v-model.number="num1">
        <select v-model="sign">
            <option>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
        </select>
        <input type="text" placeholder="请输入第二个数" v-model.number="num2"> <br>
        结果是:{{res}} <br>

  

此处为监听器实现计算功能,

<input type="text" placeholder="请输入第一个数" v-model.number="num3">
        <select v-model="sign1">
            <option>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
        </select>
        <input type="text" placeholder="请输入第二个数" v-model.number="num4"> <br>
        答案:{{res1}} <br>

用方法实现计算功能

此处给每个输入框设置了一个监听事件,当输入框的数据发生变化且失去焦点,则自动执行“change”方法。

        <input type="text" placeholder="请输入第一个数" v-model.number="num5" @change="change">
        <select v-model="sign2"  @change="change">
            <option>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
        </select>
        <input type="text" placeholder="请输入第二个数" v-model.number="num6" @change="change"> <br>
        答案:{{res2}}

  

3.完善vue的数据属性。

给每一个计算器的两个数字都给定义,定义为num1,num2...........,结果定义两个为res2,res3.各个操作符都定义为sign1,sign2,sign3.以备后续使用。

        const vm = new Vue({
            el: "#app",
            data: {
                num1:0,
                num2:0,
                sign:"+",
                num3:0,
                num4:0,
                sign1:"+",
                res1:"",
                num5:0,
                num6:0,
                sign2:"+",
                res2:""
            },
    </script>

  4.编写方法实现计算功能

    4.1.用计算属性实现

      

 computed:{
                res(){
                    if(this.sign === "+") {
                        return this.num1 + this.num2;
                    } else if(this.sign === "-") {
                        return this.num1 - this.num2;
                    } else if(this.sign === "*") {
                        return this.num1 * this.num2;
                    } else if(this.sign === "/"){
                        return this.num1 / this.num2;
                    }
                }
            },

  4.2用监听器实现

  逻辑如下:watch{}部分是一个监听器,用于监听num3,num4和sign1数据的变化,当他们的值发生变化之后,自动触发对应的方法,更新res1的值。

            watch:{
                num3(val){
                    if(this.sign1 === "+") {
                        this.res1 = val + this.num4;
                    } else if(this.sign1 === "-") {
                        this.res1 = val - this.num4;
                    } else if(this.sign1 === "*") {
                        this.res1 = val * this.num4;
                    } else if(this.sign1 === "/"){
                        this.res1 = val / this.num4;
                    }
                },
                num4(val){
                    if(this.sign1 === "+") {
                        this.res1 = this.num3 + val;
                    } else if(this.sign1 === "-") {
                        this.res1 = this.num3 - val;
                    } else if(this.sign1 === "*") {
                        this.res1 = this.num3 * val;
                    } else if(this.sign1 === "/"){
                        this.res1 = this.num3 / val;
                    }
                },
                sign1(val){
                    if(val === "+") {
                        this.res1 = this.num3 + this.num4;
                    } else if(val === "-") {
                        this.res1 = this.num3 - this.num4;
                    } else if(val === "*") {
                        this.res1 = this.num3 * this.num4;
                    } else if(val === "/"){
                        this.res1 = this.num3 / this.num4;
                    }
                }
            }

 

    4.3用方法实现。(方法的实现逻辑与计算属性的逻辑一致)

 methods:{
                change(){
                    if(this.sign2 === "+") {
                        this.res2 = this.num5 + this.num6;
                    } else if(this.sign2 === "-") {
                        this.res2 = this.num5 - this.num6;
                    } else if(this.sign2 === "*") {
                        this.res2 = this.num5 * this.num6;
                    } else if(this.sign2 === "/"){
                        this.res2 = this.num5 / this.num6;
                    }
                }
            }

     5.完整代码实现及效果

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="js/vue.js"></script>
    </head>
    <body>
    <div id="app">
        <input type="text" placeholder="请输入第一个数" v-model.number="num1">
        <select v-model="sign">
            <option>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
        </select>
        <input type="text" placeholder="请输入第二个数" v-model.number="num2"> <br>
        结果是:{{res}} <br>
        <input type="text" placeholder="请输入第一个数" v-model.number="num3">
        <select v-model="sign1">
            <option>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
        </select>
        <input type="text" placeholder="请输入第二个数" v-model.number="num4"> <br>
        答案:{{res1}} <br>
        <input type="text" placeholder="请输入第一个数" v-model.number="num5" @change="change">
        <select v-model="sign2"  @change="change">
            <option>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
        </select>
        <input type="text" placeholder="请输入第二个数" v-model.number="num6" @change="change"> <br>
        答案:{{res2}}
    </div>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                num1:0,
                num2:0,
                sign:"+",
                num3:0,
                num4:0,
                sign1:"+",
                res1:"",
                num5:0,
                num6:0,
                sign2:"+",
                res2:""
            },
            methods:{
                change(){
                    if(this.sign2 === "+") {
                        this.res2 = this.num5 + this.num6;
                    } else if(this.sign2 === "-") {
                        this.res2 = this.num5 - this.num6;
                    } else if(this.sign2 === "*") {
                        this.res2 = this.num5 * this.num6;
                    } else if(this.sign2 === "/"){
                        this.res2 = this.num5 / this.num6;
                    }
                }
            },
            computed:{
                res(){
                    if(this.sign === "+") {
                        return this.num1 + this.num2;
                    } else if(this.sign === "-") {
                        return this.num1 - this.num2;
                    } else if(this.sign === "*") {
                        return this.num1 * this.num2;
                    } else if(this.sign === "/"){
                        return this.num1 / this.num2;
                    }
                }
            },
            watch:{
                num3(val){
                    if(this.sign1 === "+") {
                        this.res1 = val + this.num4;
                    } else if(this.sign1 === "-") {
                        this.res1 = val - this.num4;
                    } else if(this.sign1 === "*") {
                        this.res1 = val * this.num4;
                    } else if(this.sign1 === "/"){
                        this.res1 = val / this.num4;
                    }
                },
                num4(val){
                    if(this.sign1 === "+") {
                        this.res1 = this.num3 + val;
                    } else if(this.sign1 === "-") {
                        this.res1 = this.num3 - val;
                    } else if(this.sign1 === "*") {
                        this.res1 = this.num3 * val;
                    } else if(this.sign1 === "/"){
                        this.res1 = this.num3 / val;
                    }
                },
                sign1(val){
                    if(val === "+") {
                        this.res1 = this.num3 + this.num4;
                    } else if(val === "-") {
                        this.res1 = this.num3 - this.num4;
                    } else if(val === "*") {
                        this.res1 = this.num3 * this.num4;
                    } else if(val === "/"){
                        this.res1 = this.num3 / this.num4;
                    }
                }
            }
        })
    </script>
</body>

</html>

 

标签:num4,val,num3,res1,else,简易,三种,sign1,计算器
From: https://www.cnblogs.com/yhyh296/p/17280304.html

相关文章

  • Java创建线程的三种方式
    创建线程的三种方式1.继承Thread类,重写run方法publicclassMyThreadextendsThread{publicvoidrun(){System.out.println("HellofromMyThread!");}}publicclassMain{publicstaticvoidmain(String[]args){MyThreadthread......
  • 使用vue四种方法写一个计算器
    第一种:使用computed计算属性1.创建项目,引入vue<scripttype="text/javascript"src="js/vue.js"></script>2.实例化vue<divid="app"></div><script>varvm=newVue({el:"#app",//通过el与di......
  • 简易计算器的实现
    一.建立一个新的项目二.引入js三.建立一个div并且创建实例化对象四.建立输入框并且设定四个可选的操作符,通过使用placeholder属性提供可描述输入字段预期值的提示信息,代码实现效果如下:五.用v-moderl属性实现双向绑定的效果(v-moder.number用来将用户的输入值转为数值类型)......
  • VUE分别使用普通方法、计算属性、监听器完成简易计算器
    VUE分别使用普通方法、计算属性、监听器完成简易计算器声明:本方法使用VUE完整框架独立模块组件来实现TOP:实现效果Ⅰ:完整框架Ⅱ:框架实现案例组件功能细分1.APP组件总组件,管理所有组件(每个单独的组件最后都汇总到APP组件里,便于管理)管理汇总:Methodss组件、Watchss......
  • MATLAB代码:全面ADMM算法代码,实现了三种ADMM迭代方式
    MATLAB代码:全面ADMM算法代码,实现了三种ADMM迭代方式关键词:综合能源分布式协同优化交替方向乘子法最优潮流参考文档:《基于串行和并行ADMM算法的电_气能量流分布式协同......
  • js:三种弹出框(alter警告,confirm确认,prompt提示)
    js:三种弹出框(alter警告,confirm确认,prompt提示)https://blog.csdn.net/qq_52824207/article/details/124081188三种弹出框都属于window对象,完整写作window.alter,三种弹出......
  • 初识JSON&JSON的三种形式&JSON的常用方法
    初识JSON 1.JSON是什么Ajax发送和接收书数据的一种格式XMLusername=alex&age=18JSON......
  • 用gpt4训练一个简易真人代理
    标题哗众取宠。。。。。。这是一个恶搞教程。。因为本人是一个AI外行就懂一点点,没研究过怎样自己弄模型训练。所以借gpt试一下。本文结构如下:方法第一步,搞数据集——聊......
  • 练习——简易的冒泡排序
    packagecom.q1u.array;importjava.util.Arrays;//冒泡排序//1.比较数组中两个相邻的元素,如果第一个数大于第二个,交换两者位置//2.每一次比较,都会产生一个最大或者......
  • Java学习---计算器(简易)
    小练习:写一个计算器,要求实现加减乘除功能,并且能循环接受新的数据。以下是我的代码:importjava.util.Scanner;publicclassDemo1{publicstaticvoidmain(Strin......