微信小程序两个Checkbox 复选框有冲突,第二个复选框选择第七个总是显示最后一个解决代码
时间: 2024-03-08 07:48:46 浏览: 125
针对您的问题,可能是因为您的代码中的数据和逻辑存在问题,导致第二个复选框选择第七个总是显示最后一个。以下是一个简单的示例代码,可能会对您有所帮助:
```html
<view class="checkbox-group">
<label wx:for="{{checkboxItems1}}" wx:key="{{item.value}}" class="checkbox">
<checkbox value="{{item.value}}" checked="{{item.checked}}" bindchange="checkboxChange1">{{item.name}}</checkbox>
</label>
</view>
<view class="checkbox-group">
<label wx:for="{{checkboxItems2}}" wx:key="{{item.value}}" class="checkbox">
<checkbox value="{{item.value}}" checked="{{item.checked}}" bindchange="checkboxChange2">{{item.name}}</checkbox>
</label>
</view>
```
```javascript
Page({
data: {
checkboxItems1: [
{ name: '选项1', value: '1', checked: false },
{ name: '选项2', value: '2', checked: false },
{ name: '选项3', value: '3', checked: false },
{ name: '选项4', value: '4', checked: false },
{ name: '选项5', value: '5', checked: false },
{ name: '选项6', value: '6', checked: false },
{ name: '选项7', value: '7', checked: false },
],
checkboxItems2: [
{ name: '选项A', value: 'A', checked: false },
{ name: '选项B', value: 'B', checked: false },
{ name: '选项C', value: 'C', checked: false },
{ name: '选项D', value: 'D', checked: false },
{ name: '选项E', value: 'E', checked: false },
{ name: '选项F', value: 'F', checked: false },
{ name: '选项G', value: 'G', checked: false },
],
},
checkboxChange1: function (e) {
const checkboxItems1 = this.data.checkboxItems1;
const values = e.detail.value;
for (let i = 0, lenI = checkboxItems1.length; i < lenI; ++i) {
checkboxItems1[i].checked = false;
for (let j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems1[i].value === values[j]) {
checkboxItems1[i].checked = true;
break;
}
}
}
this.setData({
checkboxItems1,
});
},
checkboxChange2: function (e) {
const checkboxItems2 = this.data.checkboxItems2;
const values = e.detail.value;
for (let i = 0, lenI = checkboxItems2.length; i < lenI; ++i) {
checkboxItems2[i].checked = false;
for (let j = 0, lenJ = values.length; j < lenJ; ++j) {
if (checkboxItems2[i].value === values[j]) {
checkboxItems2[i].checked = true;
break;
}
}
}
this.setData({
checkboxItems2,
});
},
});
```
在这个示例代码中,我们使用了两个独立的复选框组,分别对应两个不同的数据列表和事件处理函数。在处理函数中,我们遍历复选框选项,根据选择状态来更新数据,并且保证两个复选框组之间不会发生冲突。您可以根据自己的实际需求进行修改和优化。
阅读全文