老师有几个问题,麻烦帮忙看一下
来源:3-23 自由编程
lunaliu
2021-03-03 17:12:18
相关代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model.number = 'value1' />
<select v-model='operation'>
<option value="+" selected>+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" v-model.number = 'value2' />
<button @click='equal'>=</button>
<input type="text" v-model='total' />
</div>
<script>
new Vue({
el:'#app',
//是不是在input输入后,一定要在data中把输入的value取出来才能用
data:{
value1:null,
value2:null,
total:null,
operation:'+' //我直接在页面上写 selected不好使,页面不显示对应value为啥呢?
},
methods:{
equal(){
//如果不写switch,怎么能执行运算呢? this.total = this.value1 + (this.operation) + this.value2
switch(this.operation){
case '+':
this.total = this.value1 + this.value2;
break;
case '-':
this.total = this.value1 - this.value2;
break;
case '*':
this.total = this.value1 * this.value2;
break;
case '/':
this.total = this.value1 / this.value2;
break;
}
},
},
watch:{
operation:function(){
this.equal();
}
}
})
</script>
</body>
</html>
2回答
同学你好,想法是好的,但是没法这样实现。this.value1和this.value2都是数字,而this.operation是字符串:

数字直接拼接字符串会得到字符串,而不会进行计算,如下:

代码没有那么智能,需要我们人为的告诉它怎么计算(if、switch语句),没法像同学那样实现的。
祝学习愉快!
好帮手慕久久
2021-03-03
同学你好,解答如下:
1、是的。input中输入的内容,我们使用了v-model指令与变量value1绑定了:

所以一定要在data中,定义一下value1,这样才能正常使用value1,否则代码会报错。
2、由于select标签的内容,已经和变量operation绑定了:

所以select的选中项就会受到operation的值影响(select属性就没用了),比如我们将operation改成“-”,那么显示效果如下:


如果不绑定数据,则使用select是有效的:

3、如果不写switch语句,可以使用if语句,例如:

4、“this.total = this.value1 + (this.operation) + this.value2 ”这句话老师没理解,同学可以仔细描述一下,这句话想问的是什么,老师再帮你解答。
祝学习愉快!
相似问题