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 相关文章推荐
基于jquery的获取浏览器窗口大小的代码
Mar 28 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
JQuery 常用方法和事件详细介绍
Apr 18 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
避免jQuery名字冲突 noConflict()方法
Jul 30 Javascript
深入理解Angularjs中的$resource服务
Dec 31 Javascript
JavaScript初学者必看“new”
Jun 12 Javascript
面包屑导航详解
Dec 07 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
Dec 29 Javascript
js中Generator函数的深入讲解
Apr 07 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
用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
ThinkPHP应用模式扩展详解
2014/07/16 PHP
php图像处理类实例
2015/07/28 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
浅谈node的事件机制
2017/10/09 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
利用python代码写的12306订票代码
2015/12/20 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python实现的桶排序算法示例
2017/11/29 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
python flask安装和命令详解
2019/04/02 Python
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
大学生涯自我鉴定
2014/01/16 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
小学生思想品德评语
2014/12/31 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
MySQL多表查询机制
2022/03/17 MySQL
Python借助with语句实现代码段只执行有限次
2022/03/23 Python