首页 > 关于JS中复选框全选的

关于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++ 这段是什么意思吗?


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++; ,这样应该更容易理解的。


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


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


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


这个是短路求值,如果oInput[i].checked,则n++,否则不执行。
https://zh.wikipedia.org/wiki/%E7%9F%AD%E8%B7%AF%E6%B1%82%E5%80%BC


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


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


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

【热门文章】
【热门文章】