gpt4 book ai didi

javascript - 单击循环后如何更改颜色?

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:14 27 4
gpt4 key购买 nike

我有如下循环:

data: {
show: false
}
.test {
hight: 10px;
background-color: red;
}

.test2 {
hight: 15px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div v-for="value in data" :key="value.id">
<div class="test" v-bind:class="{ test2: show }" v-on:click="show = !show">
</div>
</div>

现在,如果我单击任何 div,所有 div 的高度都会从 15 更改为 10 或 10 更改为 15。

但是,我只想更改我单击的 div。我怎样才能做到这一点?

最佳答案

您需要为每个元素添加 show 变量:

new Vue({
el: "#app",
data: {
show: [],
items: []
},
created() {
fakeFetch().then((items) => {
this.items = items;
this.show = this.items.map(() => false);
});
},
methods: {
isShown(i) {
return this.show[i]
},
changeShow(i) {
Vue.set(this.show, i, !this.show[i]);
}
}
})

function fakeFetch() {
return new Promise((resolve, reject) => {
let count = Math.floor(Math.random() * 20) + 1;
let result = [];
for (let i = 0; i < count; i++) {
result.push({ text: Math.random() });
}
resolve(result);
})
}
.test {
height:10px;
background-color: red;
margin: 10px;
}
.test2 {
height: 35px;
}
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
<h2>Items:</h2>
<div
class="test"
:class="{ test2: isShown(index) }"
@click="changeShow(index)"
v-for="(item,index) in items" :key="index">
</div>
</div>

P.S. 要避免使用 show 数组执行此例程,您可以将每个元素定义为组件,并使用单个变量 show 切换其内部的可见性。

关于javascript - 单击循环后如何更改颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51280492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com