练习地址:http://www.fgm.cc/learn/lesson2/12.html

总结:

1.  && 运算符,从左向右依次执行,如果遇到 false,就不再继续执行后面的语句。 相当于if(oInput[i].checked) {n++;}

oInput[i].checked && n++

2. n == oInput.length - 1;   这句话先判断 n是不是等于oInput.length - 1  (即checkbox全都选中了)? 返回值 true/false ,再赋值给左边的oInput[0].checked

记住:这种类似于三元表达式的,都是先判断右边,再赋值给左边。

oInput[0].checked = n == oInput.length - 1;

3. 文字变化:全选/全不选, 也是公共事件,所以应该提取到公共函数里。 而不是单独给每个事件都加。

oBtn_selectAll.onclick = function()
{
checkOrNot(aBox);
// oTxt_selectAll.innerHTML = oBtn_selectAll.checked? "全不选" : "全选";
// 这个应该放到公共函数里,因为点其他checkbox,或者点 反选,都会引起文字变化。
};

疑问:

这个函数用var的形式写在window.onload里, 和用function写在window onload外面,区别是???

var checkOrNot = function ()
{
for(let i=0; i<aBox.length; i++)
{
if(oBtn_selectAll.checked==true)
{
aBox[i].checked = true;
}
else
{
aBox[i].checked = false;
}; oTxt_selectAll.innerHTML = oBtn_selectAll.checked? "全不选" : "全选";
};
};

示例程序:

<script type="text/javascript">

window.onload = function ()
{
var oA = document.getElementsByTagName("a")[0];
var oInput = document.getElementsByTagName("input");
var oLabel = document.getElementsByTagName("label")[0]; var isCheckAll = function ()
{
for (var i = 1, n = 0; i < oInput.length; i++)
{
oInput[i].checked && n++
// && 运算符,从左向右依次执行,如果遇到 false,就不再继续执行后面的语句。
// 相当于if(oInput[i].checked) {n++;}
}
oInput[0].checked = n == oInput.length - 1; // n == oInput.length - 1; 返回值 true/false 赋值给左边。 // 记住:这种类似于三元表达式的,都是先判断右边,再赋值给左边。 oLabel.innerHTML = oInput[0].checked ? "全不选" : "全选"
}; //全选/全不选
oInput[0].onclick = function ()
{
for (var i = 1; i < oInput.length; i++)
{
oInput[i].checked = this.checked
}
isCheckAll()
};
//反选
oA.onclick = function ()
{
for (var i = 1; i < oInput.length; i++)
{
oInput[i].checked = !oInput[i].checked
}
isCheckAll()
};
//根据复选个数更新全选框状态
for (var i = 1; i < oInput.length; i++)
{
oInput[i].onclick = function ()
{
isCheckAll()
}
}
}
</script>

自己的:

(逻辑还没完全理清,还要重写)

<script>
window.onload = function()
{
var oBtn_selectAll = document.getElementsByTagName('input')[0];
var oTxt_selectAll = document.getElementsByTagName('strong')[0];
var oBtn_selectOrNot = document.getElementsByTagName('span')[0];
var aBox = document.getElementsByTagName('ul')[0].getElementsByTagName('input'); var checkOrNot = function ()
// 这个函数用var的形式写在window.onload里, 和用function写在window onload外面,区别是???
{
for(let i=0; i<aBox.length; i++)
{
if(oBtn_selectAll.checked==true)
{
aBox[i].checked = true;
}
else
{
aBox[i].checked = false;
}; oTxt_selectAll.innerHTML = oBtn_selectAll.checked? "全不选" : "全选";
};
}; // 下面是范例公共函数部分的用法 var isCheckAll = function ()
{
for (var i = 1, n = 0; i < oInput.length; i++)
{
oInput[i].checked && n++
// && 运算符,从左向右依次执行,如果遇到 false,就不再继续执行后面的语句。
// 相当于if(oInput[i].checked) {n++;}
}
oInput[0].checked = n == oInput.length - 1; // n == oInput.length - 1; 返回值 true/false 赋值给左边。 // 记住:这种类似于三元表达式的,都是先判断右边,再赋值给左边。 oLabel.innerHTML = oInput[0].checked ? "全不选" : "全选"
}; // 全选/全不选
oBtn_selectAll.onclick = function()
{
checkOrNot(aBox);
// oTxt_selectAll.innerHTML = oBtn_selectAll.checked? "全不选" : "全选";
// 这个应该放到公共函数里,因为点其他checkbox,或者点 反选,都会引起文字变化。
}; // 反选
oBtn_selectOrNot.onclick = function()
{
oBtn_selectAll.checked = oBtn_selectAll.checked == true? false:true; checkOrNot(aBox);
};
};
</script>

JS学习笔记 - fgm练习 2-12- 全选反选 判断CheckBox是否选中 &&运算符的更多相关文章

  1. JS学习笔记 - fgm练习 2-11- 改变图片路径 var img = new Image(); 图片预加载

    <style> *{ margin: 0;padding: 0; list-style: none; } body{ background: black; } .outer{ margin ...

  2. JS学习笔记 - fgm练习 2-5 - 函数传参 设置div样式

    练习地址:http://www.fgm.cc/learn/lesson2/05.html <script> window.onload = function(){ var oDiv = d ...

  3. JS学习笔记 - fgm练习 - 输入数字求和 正则replace onkeyup事件

    <style> body{font-size: 12px;} .outer{ width: 500px; margin: 0 auto; } span{ color: #999; } in ...

  4. JS学习笔记 - fgm练习 - 鼠标移入/移出div样式改变

    思路: div的默认样式正常设置. 鼠标移入时,发生改变的样式有3个,即 边框颜色,div背景色,字体颜色. 把这三个css改变设置在一个类名下,再通过js给div动态 添加/去除这个类名,实现div ...

  5. JS学习笔记 - fgm练习 - 数字自增 定时器 数字比大小Math.max

    <script> window.onload = function(){ var oP = document.getElementsByTagName('p')[0]; var i = 0 ...

  6. JS学习笔记 - fgm练习 - 限制输入框的字符类型 正则 和 || 或运算符的运用 i++和++i

    <script> window.onload = function(){ var aInp = document.getElementsByTagName('input'); var oS ...

  7. JS学习笔记 - fgm练习 - 输入法下拉框 三元表达式

    <script> window.onload = function() { var oBtn = document.getElementsByTagName('input')[0]; va ...

  8. JS学习笔记 - fgm练习 - 网页换肤

    总结: 1. 点击按钮,div内部变色,边框保持颜色不变. 实现原理:其实本来就把background 和 border 分别设置了同一个颜色,看似是一个整体,其实本来就是分开的. 那么点击的时候,只 ...

  9. JS学习笔记 - fgm练习 - 多按钮控制同个div属性

    总结: 1. 注意body里的结构安排,全部装在大div,避免多次设置不同部分居中. 2. 一排按钮居中:装在大div里,text-align: center; 3. 把相同的部分封装成函数,即 同个 ...

随机推荐

  1. Jesse's Code

    题目描述 Jesse是个数学迷,他最喜欢研究“哥德巴赫猜想”,因此他的计算机密码也都采用素数. 但一直用同一个密码是不安全的,所以他要经常更换他的密码.但他只允许自己的密码中出现某些数字,且密码的每一 ...

  2. css line-height详解

    行高指的是文本行的基线间的距离(更简单来说,行高是指文字尺寸与行距之间的和). 而基线(Base line),指的是一行字横排时下沿的基础线, 基线并不是汉字的下端沿,而是英文字母x的下端沿,同时还有 ...

  3. 【搭建Saltstack运维工具】

    目录 所谓Salt 开始搭建 配置接受密钥 salt命令 YAML详解 目标定位字符串 state模块定义主机状态 Salt采集静态信息之GrainsSalt @(Saltstack) *** 所谓S ...

  4. CODEVS——T 4189 字典

    http://codevs.cn/problem/4189/  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Des ...

  5. 【J2EE】在项目中理解J2EE规范

             J2EE平台由一整套服务(Service),应用程序接口(API)和协议构成,它对开发企业级应用提供了功能支持.13个核心技术各自是JDBC, JNDI, EJB, RMI, JSP ...

  6. 利用gradle加入构建版本

    在java的程序中,貌似都没有这个构建版本的概念.用的诸如eclipse. idea和android studio的IDE也没有直接提供构建版本的选项.只是我却想在android程序的版本其中加入一个 ...

  7. 搭建个人博客 方式2 使用jekyll

    孙广东  2016.3.12 环境安装:1.通过 RailsInstaller  来安装 Ruby https://www.ruby-lang.org/zh_cn/documentation/inst ...

  8. 给Linux添加新用户,新建用户,新建帐号

    给Linux添加新用户,新建用户,新建帐号 添加用户组 sudo groupadd groupname 添加用户 sudo useradd username -m -s /sbin/nologin - ...

  9. gvim window7 下提示乱码

    今天在win7下安装gvim的时候,发现所有的提示信息都是乱码的,在网上找到了如下的解决方案.在此记录下,方便以后查阅. 以下内容转载自http://blog.csdn.net/rehung/arch ...

  10. 53.遇到SyntaxError: Unexpected token

    转自:https://segmentfault.com/q/1010000002649920/a-1020000002655984 不知道你自己现在已经发现问题没, Unexpected token ...