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 backgroundImage控制
May 19 Javascript
jQuery 选择器理解
Mar 16 Javascript
Google AJAX 搜索 API实现代码
Nov 17 Javascript
web前端设计师们常用的jQuery特效插件汇总
Dec 07 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
浅谈vue.js导入css库(elementUi)的方法
Mar 09 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
Apr 11 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
vue element和nuxt的使用技巧分享
Jan 14 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
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
python基础教程之udp端口扫描
2014/02/10 Python
Python读写文件方法总结
2015/06/09 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
python中单下划线_的常见用法总结
2018/07/10 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
django云端留言板实例详解
2019/07/22 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
《风娃娃》教学反思
2014/04/19 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
被告答辩状范文
2015/05/22 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL