js求助帖

54 阅读1分钟

先上代码 布局部分

 <div class="box">
    <div class="bb"><input type="checkbox">全选</div>
    <ul>
        <li><input type="checkbox"></li>
        <li><input type="checkbox"></li>
        <li><input type="checkbox"></li>
        <li><input type="checkbox"></li>
    </ul>
</div> 

css部分

  * {
        margin: 0;
        padding: 0;
    }

    li {
        list-style-type: none;
    }

    i {
        font-style: normal;
        margin-left: 20px;
    }

    .box {
        width: 300px;
        height: 300px;
        margin: 100px auto;
    } 


代码部分
  var b = document.querySelector('.bb').querySelector('input');
var f = document.querySelector('.box');
var lis = f.children[1].querySelectorAll('input');
console.log(lis);
b.onclick = function () {
    for (i = 0; i < lis.length; i++) {
        lis[i].checked = this.checked;
    }
}
for (i = 0; i < lis.length; i++) {
    var r = true;
    lis[i].onclick = function () {
        for (i = 0; i < lis.length; i++) {
            if (lis[i].checked == false) {
                b.checked = false;
                break;
            } else {
                b.checked = r;
            }
        }

    }
}

```

uTools_1684485108252.png

问题就是当我把这个break去掉时,当我下面的input有没选中的,上面的全选input还是一个选中状态。

image.png

有大佬可以说一下这是因为什么吗? 谢谢