请实现一个简单的网页计算器(vue)

练习一下父组件向子组件传值,计算部分用eval方法实现。

运行截图如下:

 话不多说,上代码。

页面结构:

<div id="app">
        <my-parent></my-parent>
</div>

组件模板:

    <template id='parent'>       
        <div style="margin-top: 20px">
            <input type="radio" id="1" value=1 v-model="radio3"> 加法
            <input type="radio" id="2" value=2 v-model="radio3"> 减法
            <input type="radio" id="3" value=3 v-model="radio3"> 乘法
            <input type="radio" id="4" value=4 v-model="radio3"> 除法
            <my-child v-bind:cal='radio3'></my-child>
        </div>
    </template>
    
    <template id='child'>
          <div>
            <b>数据1:</b>
            <input type="number" v-model="num1">
            <br>
            <b>数据2:</b>
            <input type="number" v-model="num2">
            <br>
            <button @click='jisuan'>计算</button>
            <br>
            <h1>结果:{{te}}</h1>
          </div>       
    </template>

js代码:

    <script>
        Vue.component('myParent',{
            template:'#parent',
            data(){
                return {
                    radio3:'1'
                }
            }
        })
        Vue.component('myChild',{
            template:'#child',
            props:['cal'],
            data(){
                return {
                    te:'',
                    num1:0,                  
                    num2:0
                }
            },
            methods:{
                jisuan(){
                    var num=this.$props.cal;
                    if(num==1)
                    this.te=eval(this.num1+'+'+this.num2);
                    if(num==2)
                    this.te=eval(this.num1+'-'+this.num2);
                    if(num==3)
                    this.te=eval(this.num1+'*'+this.num2);
                    if(num==4)
                    {
                        this.te=(this.num2==0?"除数不能0":eval(this.num1+'/'+this.num2));
                        console.log(this.te)
                    }
                    
                }
            }
        })
        var vm = new Vue({
        el:"#app",
        data:{
            
        }
    })
    </script>

谁还没有点初学者的艰难岁月呢?

We only need to be on ourselves own admantly.

Vue 实现一个简单网页计算器可以分为以下几个步骤: 1. **创建项目**: 使用 Vue CLI 创建一个新的 Vue.js 项目,或者手动搭建基础结构。 2. **组件化设计**: - **输入框**(Input):创建两个 Input 组件分别用于显示数字和操作结果,可以使用 v-model 指令双向绑定数据。 - **按钮**(Button):为了方便维护和代码复用,你可以为加、减、乘、除等操作各创建一个 Button 组件,并添加点击事件处理函数。 3. **计算逻辑**: 在父组件中,管理一个计算属性(如 `total`),并为每个操作按钮设置 `@click` 事件,触发相应的计算操作。例如: ```html <template> <div> <input v-model="num1" /> <select v-model="operator"> <option>+</option> <option>-</option> <option>*</option> <option>/</option> </select> <input v-model="num2" /> <button @click="calculate">计算</button> <p>{{ result }}</p> </div> </template> <script> export default { data() { return { num1: '', operator: '+', num2: '', result: '', }; }, methods: { calculate() { const numbers = [Number(this.num1), Number(this.num2)]; switch (this.operator) { case '+': this.result = numbers[0] + numbers[1]; break; case '-': this.result = numbers[0] - numbers[1]; break; case '*': this.result = numbers[0] * numbers[1]; break; case '/': if (numbers[1] !== 0) { this.result = numbers[0] / numbers[1]; } else { // 处理除数为零的情况 console.log('错误:除数不能为零'); this.result = 'Error'; } break; } }, }, }; </script> ``` 4. **样式美化**: 添加 CSS 样式,提升用户体验,比如颜色、间距和图标等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值