checkbox全选所涉及到的知识点介绍


Posted in Javascript onDecember 31, 2013

1、IE里起作用,火狐不起作用

IE版本

<script type="text/javascript"> function checkALL(str)//全选控制的JS 
{ 
var a=document.getElementsByName(str); 
var n=a.length; 
for(var i=0;i<n;i++) 
{ 
a[i].checked=window.event.srcElement.checked; 
} 
} 
</script>

火狐版本
<script type="text/javascript"> function checkALL(str)//全选控制的JS 
{ 
var a=document.getElementsByName(str); 
var n=a.length; 
for(var i=0;i<n;i++){ 
a[i].checked=document.getElementById("all").checked; 
} 
} 
</script>

原因分析:window.event只能在IE下运行,所以在火狐下js运行不起作用。火狐版本里头,是直接获得"id=all"的checkbox被选择状态,然后赋值给"name=str"的checkbox组的每一项,这样就可以保持选择状态的同步。

2、document.getElementById()与document.getElementsByName()的区别

上面那段js通过两种方式获得了checkbox的状态,从名字上看,他们的作用应该是类似,一个通过id获得元素,一个通过name获得元素。但这两个方法是有差别的,如果在使用过程中不注意,很可能会觉得可以混用,从而会造成困扰。我当时就觉得随便用一个就好,但改名字后,js代码却不起作用,其实是因为不了解,导致用错了。

(1)document.getElementById()是通过id访问某一个特定元素,因为在一个页面中id是唯一的,所以这个函数返回的是一个Element

(2)document.getElementsByName()是通过name来访问元素,因为在一个页面中name不是唯一的,可以重名,所以这个函数返回的是一组Elements

正是因为一个是元素,一个是数组,所以在混用的时候不注意就会出错,导致js运行不下去。比如,当时我把a[i].checked=document.getElementById("all").checked;改成a[i].checked=document.getElementsByName("all").checked;的时候,js运行不起作用(因为js出错但不报错,所以感觉是没起作用),其实此处并不是不识别,是因为调用的时候用错了,正确写法是a[i].checked=document.getElementsByName("all")[0].checked;这样改后,效果一样。因为我们的页面中只存在一个"name=all"的checkbox,所以我们以[0]来取Elements中的第一个元素,就是我们通过a[i].checked=document.getElementById("all").checked;获得的那个元素。

Javascript 相关文章推荐
javascript 检测浏览器类型和版本的代码
Sep 15 Javascript
清除div下面的所有标签的方法
Feb 17 Javascript
chrome下jq width()方法取值为0的解决方法
May 26 Javascript
深入分析node.js的异步API和其局限性
Sep 05 Javascript
js字符串操作总结(必看篇)
Nov 22 Javascript
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
Jul 13 Javascript
详解mpvue中小程序自定义导航组件开发指南
Feb 11 Javascript
谈谈JavaScript令人迷惑的==与+
Aug 31 Javascript
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 #Javascript
js类式继承的具体实现方法
Dec 31 #Javascript
利用javascript判断文件是否存在
Dec 31 #Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 #Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
Dec 31 #Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
Dec 31 #Javascript
IE与FireFox的JavaScript兼容问题解决办法
Dec 31 #Javascript
You might like
4.与数据库的连接
2006/10/09 PHP
一个php作的文本留言本的例子(二)
2006/10/09 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
python函数的5种参数详解
2017/02/24 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
python操作excel的方法
2018/08/16 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
Python datetime 如何处理时区信息
2020/09/02 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
留守儿童工作方案
2014/06/02 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
好人好事新闻稿
2015/07/17 职场文书
导游词之峨眉山
2019/12/16 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS