关于JS中复选框全选的

{
        for (var i = 1, n = 0; i < oInput.length; i++)
        {
            oInput[i].checked && n++    
        }
        oInput[0].checked = n == oInput.length - 1;
        oLabel.innerHTML = oInput[0].checked ? "全不选" : "全选"
    };

能不能告诉 我oInput[i].checked && n++ 这段是什么意思吗?

阅读 5.5k
8 个回答

这个就是记住选中的checkbox的个数,如果左边的oInput[i].checked为true,才会执行后边的n++;如果左边的oInput[i].checked为false,则不换执行n++;逻辑运算符经常起到短路的作用,||或逻辑运算符,如果前边的值为真,即true,那么就不管后边的值是真是假,都返回真,对后边的值不进行检查,直接跳过执行下一条语句。&&与逻辑运算符,如果前边的值为假,即false,那么不管后边的值为真还是假,都返回假,对后边的值不进行检查,直接跳过执行下一条语句。

如果checked为true就执行后面内容。通常是为了简化写if(xxxx){yyyy;},直接变成xxxx && yyyy,但是需要注意一个问题,后面的yyyy要考虑运算符优先级的问题,例如要执行a+2,必须用括号括起来(a+2)

i = 1, n = 0; i < oInput.length=>i从1到oInput.length,一共(oInput.length-1)个。所以后来会出现n == oInput.length - 1判断是否相等。oInput[i].checked && n++,如果oInput[i]这个选中了,那么n++;也就是说所有的oInput[i]都选中了,n == oInput.length - 1,这个才会成立。其实代码还可以这样写。if(oInput[i].checked) n++; ,这样应该更容易理解的。

短路逻辑!查查帮助文档关于关系运算的部分~

新手上路,请多包涵

统计已选中的复选框的个数。

新手上路,请多包涵

逻辑与操作符的短路作用,前边的值为true,
n加一,为false, n不变

统计没有选中的checkbox个数。
与运算第一个表达式为假,第二个表达式不执行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题