vue实现有一个数字的数组,点击对应数组前的input按钮求对应点击数字的和,取消点击后计算留下来的值
时间: 2023-12-03 17:42:08 浏览: 82
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
可以通过以下步骤实现:
1. 在 Vue 的 data 中定义一个数字数组 `numbers`,以及一个变量 `sum` 用于存储数字的总和。
2. 在模板中使用 `v-for` 渲染数组,同时在每个数字前面添加一个 input 按钮,绑定点击事件到一个方法 `toggleNumber` 上,传递当前数字的索引作为参数。
3. 在 `toggleNumber` 方法中,根据传递的索引判断当前数字是否已经被选中,如果是则从总和中减去该数字,否则将其加入总和。最后更新数组中该数字的选中状态。
4. 可以通过计算属性来获取数组中被选中数字的总和,将其赋值给 `sum` 变量。
下面是一个简单的示例代码:
```html
<template>
<div>
<div v-for="(number, index) in numbers" :key="index">
<input type="button" :value="number" @click="toggleNumber(index)">
</div>
<p>当前选中数字的总和为:{{ sum }}</p>
</div>
</template>
<script>
export default {
data() {
return {
numbers: [1, 2, 3, 4, 5],
selected: [], // 存储被选中数字的索引
sum: 0 // 数字的总和
}
},
methods: {
toggleNumber(index) {
if (this.selected.includes(index)) {
// 数字已经被选中,从总和中减去该数字
this.sum -= this.numbers[index];
this.selected.splice(this.selected.indexOf(index), 1);
} else {
// 数字未被选中,将其加入总和
this.sum += this.numbers[index];
this.selected.push(index);
}
}
},
computed: {
sum() {
return this.selected.reduce((acc, index) => acc + this.numbers[index], 0);
}
}
}
</script>
```
阅读全文