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 相关文章推荐
有关于JS辅助函数inherit()的问题
Apr 07 Javascript
Javascript中浮点数相乘的一个解决方法
Jun 03 Javascript
windows8.1+iis8.5下安装node.js开发环境
Dec 12 Javascript
JavaScript多线程详解
Aug 12 Javascript
JQuery异步提交表单与文件上传功能示例
Jan 12 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
Jun 09 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
Vue实现日历小插件
Jun 26 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
Jul 08 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
浅谈layui 表单元素的选中问题
Oct 25 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
php类
2006/11/27 PHP
php创建多级目录代码
2008/06/05 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
javascript基本算法汇总
2016/03/09 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript