用vue写出四个按钮每个按钮匹配一个勾选框。第一行延时0.1秒触发。第二行0.2秒依次类推。然后有个开始按钮。勾选后按钮后。比如勾选了第一行。第三行。分别在0.1秒点击下第一行按钮。每0.3秒点击下第三行按钮。开始按钮点击后变成停止按钮并变色
时间: 2023-08-21 20:03:28 浏览: 96
好的,下面是一个简单的实现:
```html
<template>
<div>
<div class="row">
<button :disabled="!start" @click="clickButton(0)">Button 1</button>
<button :disabled="!start" @click="clickButton(1)">Button 2</button>
<button :disabled="!start" @click="clickButton(2)">Button 3</button>
<button :disabled="!start" @click="clickButton(3)">Button 4</button>
</div>
<div class="row">
<input type="checkbox" v-model="checked[0]">
<input type="checkbox" v-model="checked[1]">
<input type="checkbox" v-model="checked[2]">
<input type="checkbox" v-model="checked[3]">
</div>
<button :class="{ start: start, stop: !start }" @click="startStop">{{ start ? 'Stop' : 'Start' }}</button>
</div>
</template>
<script>
export default {
data() {
return {
checked: [false, false, false, false],
start: true,
intervalIds: [],
delays: [100, 200, 300, 400],
};
},
methods: {
clickButton(index) {
console.log(`Clicked button ${index + 1}`);
},
startStop() {
this.start = !this.start;
if (this.start) {
this.intervalIds.forEach((id) => clearInterval(id));
} else {
this.intervalIds = this.checked.map((c, i) => {
if (c) {
return setInterval(() => {
this.clickButton(i);
}, this.delays[i]);
} else {
return null;
}
});
}
},
},
};
</script>
<style>
.row {
display: flex;
justify-content: space-between;
margin-bottom: 1rem;
}
button {
padding: 0.5rem 1rem;
font-size: 1rem;
border-radius: 0.25rem;
background-color: #ccc;
border: none;
color: #fff;
cursor: pointer;
transition: background-color 0.2s ease-in-out;
}
button.start {
background-color: green;
}
button.stop {
background-color: red;
}
input[type='checkbox'] {
margin-right: 1rem;
}
</style>
```
这个组件有两个部分:
1. 四个按钮和四个勾选框。按钮和勾选框是通过一个数组来绑定的,这样我们就可以轻松地添加或删除按钮和勾选框。按钮的点击事件会输出一个日志,你可以根据需求来替换成自己的逻辑。
2. 一个开始/停止按钮。点击这个按钮会开启或停止定时器。当点击开始按钮时,会根据勾选框的状态来创建对应的定时器,并将定时器 ID 存储在 `intervalIds` 数组中。当点击停止按钮时,会清除所有定时器。
在样式方面,我只是简单地给按钮添加了一些样式,让它们看起来更像按钮。你可以根据自己的需求来修改它们的样式。
阅读全文