IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性


Posted in Javascript onAugust 28, 2011

如设置class属性

el.setAttribute('class', 'abc');

在IE6/7中样式“abc”将没有起作用,虽然使用el.getAttribute('class')能取到值“abc”。

又如for属性

<label>姓名:</label><input type="checkbox" id="name"/> 
<script> 
var lab = document.getElementsByTagName('label')[0]; 
lab.setAttribute('for', 'name'); 
</script>

我们知道当lab设置了for属性,点击label将自动将对应的checkbox选中。但以上设置在IE6/7点击将不会选中checkbox。

类似的情况还发生在 cellspacing/cellpadding 上。汇总如下:
class
for
cellspacing
cellpadding
tabindex
readonly
maxlength
rowspan
colspan
usemap
frameborder
contenteditable
因此,当写一个通用的跨浏览器的设置元素属性的接口方法时需要考虑注意以上属性在IE6/7中的特殊性。如下

dom = (function() { 
var fixAttr = { 
tabindex: 'tabIndex', 
readonly: 'readOnly', 
'for': 'htmlFor', 
'class': 'className', 
maxlength: 'maxLength', 
cellspacing: 'cellSpacing', 
cellpadding: 'cellPadding', 
rowspan: 'rowSpan', 
colspan: 'colSpan', 
usemap: 'useMap', 
frameborder: 'frameBorder', 
contenteditable: 'contentEditable' 
}, 
div = document.createElement( 'div' ); 
div.setAttribute('class', 't'); 
var supportSetAttr = div.className === 't'; 
return { 
setAttr : function(el, name, val) { 
el.setAttribute(supportSetAttr ? name : (fixAttr[name] || name), val); 
}, 
getAttr : function(el, name) { 
return el.getAttribute(supportSetAttr ? name : (fixAttr[name] || name)); 
} 
} 
})();

首先,标准浏览器直接使用原始属性名;其次,IE6/7非以上列举的属性仍然用原始属性名;最后这些特殊属性(与JS关键字同名如for,class)使用fixAttr。
好了,现在不用考虑className/htmlFor了,都使用class/for即可。
dom.setAttr(el, 'class', 'red'); 
dom.getAttr(el, 'class'); 
dom.setAttr(el, 'for', 'userName'); 
dom.getAttr(el, 'for');
Javascript 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
javascript实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
Oct 17 Javascript
JavaScript中document.forms[0]与getElementByName区别
Jan 21 Javascript
jquery仿百度经验滑动切换浏览效果
Apr 14 Javascript
浅谈JavaScript超时调用和间歇调用
Aug 30 Javascript
vue分类筛选filter方法简单实例
Mar 30 Javascript
JavaScript定时器setTimeout()和setInterval()详解
Aug 18 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
判断滚动条滑到底部触发事件(实例讲解)
Nov 15 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
layui实现根据table数据判断按钮显示情况的方法
Sep 26 Javascript
IE6、IE7中获取Button元素的值的bug说明
Aug 28 #Javascript
JavaScript 选中文字并响应获取的实现代码
Aug 28 #Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 #Javascript
jquery 查找iframe父级页面元素的实现代码
Aug 28 #Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 #Javascript
一个JQuery写的点击上下滚动的小例子
Aug 27 #Javascript
JavaScript 原型继承之构造函数继承
Aug 26 #Javascript
You might like
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
Python获取apk文件URL地址实例
2013/11/01 Python
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
理解Python中的类与实例
2015/04/27 Python
python中import reload __import__的区别详解
2017/10/16 Python
Python实现代码统计工具
2019/09/19 Python
python opencv进行图像拼接
2020/03/27 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
python如何编写win程序
2020/06/08 Python
python缩进长度是否统一
2020/08/02 Python
thinkphp5 路由分发原理
2021/03/18 PHP
三星英国官网:Samsung英国
2018/09/25 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
成教自我鉴定
2013/10/27 职场文书
行政助理的职责
2013/11/14 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
开工典礼策划方案
2014/05/23 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
maven依赖的version声明控制方式
2022/01/18 Java/Android
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server
python数字图像处理实现图像的形变与缩放
2022/06/28 Python