练习地址: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. 洛谷 P2684 搞清洁

    P2684 搞清洁 题目描述 FJ准备分配它的N只奶牛(1 <= N <= 25,000) 做清洁工作,他把一天分成T(1 <= T <= 1,000,000)个时间段,他希望 ...

  2. MAC 下的简单 SHELL 入门

    1.创建文件 .sh 文件 本例,将 sh 文件全名为 demo.sh,接下来使用随意熟悉的编辑器编辑命令就可以 2.编写 .sh 文件 #!/bin/sh echo +--------------- ...

  3. powershell《语音报警系统》

    用powershell实现:“倩女幽魂姥姥”版<语音报警系统> ------[第一章 前言]------ win7,及以上版本中,是自带语音库的,系统自带一套女声中文库,一套女声英文库.用 ...

  4. TensorFlow的学习

    1.先判断python的版本(因为有些python版本自带pip,可以参考我写的对pip的认识的博客文章),选择是否安装pip,然后安装更新tensorflow如:sudo pip install - ...

  5. 下载安装与配置Excel 2013数据挖掘加载项(SQL Server 2012 SP1 + SQLServer2012_DMAddin.msi)

    一.系统要求 在安装这个数据挖掘加载项前,你的机器必须要可以支持如下的相关系统设备: (1)操作系统:windows 7 和  windows 8,暂时不支持 windows 10. (2)excel ...

  6. 分享一个js加密的几种方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. lastlog---显示系统中所有用户最近一次登录信息。

    lastlog命令用于显示系统中所有用户最近一次登录信息. lastlog文件在每次有用户登录时被查询.可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log ...

  8. matplotlib散点图笔记

    定义: 由一组不连续的点完成的图形 散点图: 包含正相关性,负相关性和不相关性. 散点图生成函数: plt.scatter(x,y) 演示代码如下: import numpy as np import ...

  9. sim800c GPRS模块的透传模式

    一.透传模式 基于sim800c GPRS模块在建立TCP/IP连接情况下,可以设置进入透传模式,用来接收和发送数据,一旦进入即从串口收到的数据将被打包,然后发送.接收同理. 注意在透传模式下所有的A ...

  10. Java反射之getInterfaces()方法

    今天学习Spring3框架,在理解模拟实现Spring Ioc容器的时候遇到了getInterfaces()方法.getInterfaces()方法和Java的反射机制有关.它能够获得这个对象所实现的 ...