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 相关文章推荐
AJAX架构之Dojo篇
Apr 10 Javascript
判断对象是否Window的实现代码
Jan 10 Javascript
JavaScript日期时间格式化函数分享
May 05 Javascript
jquery实现多行文字图片滚动效果示例代码
Oct 10 Javascript
javascript将url中的参数加密解密代码
Nov 17 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
JavaScript中Window对象的属性及事件
Dec 25 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
Vue实现virtual-dom的原理简析
Jul 10 Javascript
React 组件转 Vue 组件的命令写法
Feb 28 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/10/09 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
PHP处理会话函数大总结
2015/08/05 PHP
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
flask实现验证码并验证功能
2019/12/05 Python
Python如何读取文件中图片格式
2020/01/13 Python
Python requests接口测试实现代码
2020/09/08 Python
小学教师事迹材料
2014/01/13 职场文书
工程承诺书怎么写
2014/05/24 职场文书
学校搬迁方案
2014/06/15 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2014小学年度工作总结
2014/12/20 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
Oracle中update和select 关联操作
2022/01/18 Oracle