JS学习笔记 - fgm练习 2-12- 全选反选 判断CheckBox是否选中 &&运算符
练习地址: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是否选中 &&运算符的更多相关文章
- JS学习笔记 - fgm练习 2-11- 改变图片路径 var img = new Image(); 图片预加载
<style> *{ margin: 0;padding: 0; list-style: none; } body{ background: black; } .outer{ margin ...
- JS学习笔记 - fgm练习 2-5 - 函数传参 设置div样式
练习地址:http://www.fgm.cc/learn/lesson2/05.html <script> window.onload = function(){ var oDiv = d ...
- JS学习笔记 - fgm练习 - 输入数字求和 正则replace onkeyup事件
<style> body{font-size: 12px;} .outer{ width: 500px; margin: 0 auto; } span{ color: #999; } in ...
- JS学习笔记 - fgm练习 - 鼠标移入/移出div样式改变
思路: div的默认样式正常设置. 鼠标移入时,发生改变的样式有3个,即 边框颜色,div背景色,字体颜色. 把这三个css改变设置在一个类名下,再通过js给div动态 添加/去除这个类名,实现div ...
- JS学习笔记 - fgm练习 - 数字自增 定时器 数字比大小Math.max
<script> window.onload = function(){ var oP = document.getElementsByTagName('p')[0]; var i = 0 ...
- JS学习笔记 - fgm练习 - 限制输入框的字符类型 正则 和 || 或运算符的运用 i++和++i
<script> window.onload = function(){ var aInp = document.getElementsByTagName('input'); var oS ...
- JS学习笔记 - fgm练习 - 输入法下拉框 三元表达式
<script> window.onload = function() { var oBtn = document.getElementsByTagName('input')[0]; va ...
- JS学习笔记 - fgm练习 - 网页换肤
总结: 1. 点击按钮,div内部变色,边框保持颜色不变. 实现原理:其实本来就把background 和 border 分别设置了同一个颜色,看似是一个整体,其实本来就是分开的. 那么点击的时候,只 ...
- JS学习笔记 - fgm练习 - 多按钮控制同个div属性
总结: 1. 注意body里的结构安排,全部装在大div,避免多次设置不同部分居中. 2. 一排按钮居中:装在大div里,text-align: center; 3. 把相同的部分封装成函数,即 同个 ...
随机推荐
- useradd
功能说明:useradd命令可用于创建新的用户或者更改用户的信息. 语法格式:useradd [选项] [用户名]useradd -D [选项] 选项说明:1.使用useradd常规添加用户工作原理流 ...
- C/C++(C++类与对象)
构造器(constructor) 1.与类名相同,无返回,被系统生成对象时自动调用,用于初始化. 2.可以有参数,构造器的重载,有默认参数.重载和默认参数不能同时出现,但是一定要包含标配(无参数的构造 ...
- nodeType 节点的类型
元素结点 1 属性结点 2 attributes 文本结点 3 注释结点 8 document结点 9 documentFragment 11 文档碎片
- JS的解析与执行过程—全局预处理阶段之命名冲突的处理策略
有如下代码: <body> <script> alert(f); function f() { console.log("fff"); } var f = ...
- 【福利】微信小程序130个精选Demo合集
小编最近在开发小程序,也读到了不少优秀的小程序源码,项目中有些需求可以直接从源码里粘贴复制过来,虽然这样做不利于自己独立编写代码,但比较是给公司做项目啊,秉着效率第一的原则,简直没有什么比ctrl+c ...
- 高速排序——JAVA实现(图文并茂)
高快省的排序算法 有没有既不浪费空间又能够快一点的排序算法呢?那就是"高速排序"啦! 光听这个名字是不是就认为非常高端呢. 如果我们如今对"6 1 2 7 9 3 4 5 ...
- ognl.OgnlException: target is null for setProperty(null,"XXXX"...)
今天遇到了这个奇葩问题,最后来回比对了一下前辈写过的一段完整代码后才发现问题. Error大概描写叙述为: 警告: Error setting expression 'XXX' with value ...
- cgroups
CGROUPS官方解析,用户空间怎样监控 http://blog.chinaunix.net/uid-16763274-id-2103750.html cgroups概念 fr=aladdin&quo ...
- 2229: [Zjoi2011]最小割(最小割树)
Description 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中 ...
- UITouch 的使用
直接上代码: touch 的四大状态.: // // TouchView.m // UI_practice_04 // // Created by lanouhn on 15/4/22. // Cop ...