失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > vue双向绑定checked属性JavaScript原生实现全选反选功能

vue双向绑定checked属性JavaScript原生实现全选反选功能

时间:2022-12-07 08:37:49

相关推荐

vue双向绑定checked属性JavaScript原生实现全选反选功能

功能要求:

1、点击全选,其他相关的复选框都会被选中

2、取消全选,相关复选框都变成不选中

3、所有相关复选框都被选中后,全选框被选中

4、只要有一个相关复选框没有被选中,全选框就不被选中

一、vue双向绑定checked属性实现

思路:通过v-model与data中的数据进行双向绑定;当设置全选框状态时通过计算属性isAll的set方法给相关子复选框设置为相同的状态;获取全选框状态时调用get方法根据子复选框的状态进行返回。

<div id="app"><input type="checkbox" class="check-all" v-model="isAll">全选<input type="checkbox" class="check-item" v-model="apple">苹果<input type="checkbox" class="check-item" v-model="banana">香蕉<input type="checkbox" class="check-item" v-model="pear">梨</div><script>new Vue({el: "#app",data() {return {apple: false,banana: false,pear: false}},computed: {isAll: {set(val) {//设置全选框状态时同时将相关复选框设置为相同状态this.apple = val;this.banana = val;this.pear = val;},get() {return this.apple && this.banana && this.pear;}}}})</script>

二、JavaScript实现全选和反选

<div class="app"><input type="checkbox" class="all">全选<input type="checkbox" class="ck">苹果<input type="checkbox" class="ck">柿子<input type="checkbox" class="ck">桃子<input type="checkbox" class="ck">西瓜</div><script>let all = document.querySelector(".all");let ck = document.querySelectorAll(".ck");//给全选框添加点击事件,并将相关复选框的状态设置为与全选框的状态相同all.addEventListener('click', function() {ck.forEach(item => {item.checked = all.checked;})})//给每个子复选框添加点击事件ck.forEach(item => {item.addEventListener('click', function() {let num = document.querySelectorAll('.ck:checked').length;//判断子复选框选中的个数与子复选框的个数是否相等all.checked = num == ck.length ? true : false;})})</script>

如果觉得《vue双向绑定checked属性JavaScript原生实现全选反选功能》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。