老师有几个问题,麻烦帮忙看一下

来源: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回答

好帮手慕久久

2021-03-03

同学你好,想法是好的,但是没法这样实现。this.value1和this.value2都是数字,而this.operation是字符串:

http://img.mukewang.com/climg/603f657f09ce98f605440216.jpg

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

http://img.mukewang.com/climg/603f65bb09000a5f03610140.jpg

代码没有那么智能,需要我们人为的告诉它怎么计算(if、switch语句),没法像同学那样实现的。

祝学习愉快!

0
hunaliu
hp>好吧 谢谢老师

h021-03-03
共1条回复

好帮手慕久久

2021-03-03

同学你好,解答如下:

1、是的。input中输入的内容,我们使用了v-model指令与变量value1绑定了:

http://img.mukewang.com/climg/603f5eea09d3b63a07570100.jpg

所以一定要在data中,定义一下value1,这样才能正常使用value1,否则代码会报错。

2、由于select标签的内容,已经和变量operation绑定了:

http://img.mukewang.com/climg/603f5f6a09094e8006830174.jpg

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

http://img.mukewang.com/climg/603f5fd60939e64608320583.jpg

http://img.mukewang.com/climg/603f600f09e0d00b03580076.jpg

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

http://img.mukewang.com/climg/603f60d20965128905830175.jpg

http://img.mukewang.com/climg/603f60db09e81fcb03050097.jpg

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

http://img.mukewang.com/climg/603f602609f1c5a708010720.jpg

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

祝学习愉快!


0
hunaliu
hp>老师,我的意思是this.total = this.value1 + (this.operation) + this.value2,

怎么能直接把this.operation转译出来,这样就不用写那么多判断了

h021-03-03
共1条回复

0 学习 · 10739 问题

查看课程