用计算属性和监听器制作计算器

1.先在JS下创建好html,同时把vue.js拉入JS下, 写好整体框架,链入vue.js

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="vue.js" type="text/javascript" charset="UTF-8"></script>
	</head>
	<body>
		<div id="computer">
			
			
		</div>
	</body>
	<script>
            var vm = new Vue({
                el:"#computer",
                data(){
                	return{
                	}
                }
               })
    </script>
</html>

2.写好简易布局,并用select来存放计算符号,并用v-model来绑定

<body>
		<div id="computer">
			<select v-model="opt">
                <option >+</option>
                <option >-</option>
                <option >*</option>
                <option >/</option>
            </select>
			
		</div>
	</body>

3.插入input,使数字转化为整型

<div id="computer">
            <input type="text" placeholder="请输入第一个数" v-model.number="num1">
            <select v-model="opt">
                <option >+</option>
                <option >-</option>
                <option >*</option>
                <option >/</option>
            </select>
            <input type="text" placeholder="请输入第二个数" v-model.number="num2">
            <h3>结果:{{num1}}+{{num2}}={{result}}</h3>
        </div>
<script>
            var vm = new Vue({
                el:"#computer",
                data(){
                    return{
                        num1:0,
                        num2:0,
                        result:0,
                        opt:"+"
                    }
                })
        </script>

4.加入按钮并实现点击事件,使其有一个简单地计算

 <body>
        <div id="computer">
            <input type="text" placeholder="请输入第一个数" v-model.number="num1">
            <select v-model="opt">
                <option >+</option>
                <option >-</option>
                <option >*</option>
                <option >/</option>
            </select>
            <input type="text" placeholder="请输入第二个数" v-model.number="num2">
            <h3>结果:{{num1}}+{{num2}}={{result}}</h3>
            <button @Click="terms">计算</button>
        </div>

        <script>
            var vm = new Vue({
                el:"#computer",
                data(){
                    return{
                        num1:0,
                        num2:0,
                        result:0,
                        opt:"+"
                    }
                },
                methods:{
                    terms(){
                        if(this.opt == "+"){
                            this.result=this.num1+this.num2;
                        }else if (this.opt == "-") {
                            this.result=this.num1-this.num2;
                        }else if (this.opt == "*") {
                            this.result=this.num1*this.num2;
                        }else{
                            this.result=this.num1/this.num2;
                        }
                        
                    }
                })
        </script>

5.加入watch属性,监听数字和符号的改变,并进行计算

watch:{
                    opt(newValue,oldValue){
                        if(newValue == "+"){
                            this.result=this.num1+this.num2;
                        }else if (newValue == "-") {
                            this.result=this.num1-this.num2;
                        }else if (newValue == "*") {
                            this.result=this.num1*this.num2;
                        }else{
                            this.result=this.num1/this.num2;
                        }
                    },
                    num1(newValue,oldValue){
                        if(this.opt == "+"){
                            this.result=newValue+this.num2;
                        }else if (this.opt == "-") {
                            this.result=newValue-this.num2;
                        }else if (this.opt == "*") {
                            this.result=newValue*this.num2;
                        }else{
                            this.result=newValue/this.num2;
                        }
                    },
                    num2(newValue,oldValue){
                        if(this.opt == "+"){
                            this.result=this.num1+newValue;
                        }else if (this.opt == "-") {
                            this.result=this.num1-newValue;
                        }else if (this.opt == "*") {
                            this.result=this.num1*newValue;
                        }else{
                            this.result=this.num1/newValue;
                        }
                    }
                }

6.利用computed的属性来计算

computed:{
                    terms(){
                        if(this.opt == "+"){
                            this.result=this.num1+this.num2;
                        }else if (this.opt == "-") {
                            this.result=this.num1-this.num2;
                        }else if (this.opt == "*") {
                            this.result=this.num1*this.num2;
                        }else{
                            this.result=this.num1/this.num2;
                        }
                        
                    }
                }

7.最后为了页面更加美观,写入简单地style

<style>
		#computer{
			margin:0 auto;
			height: 500px;
			width: 500px;
			
		}
    </style>

展示最后结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值