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 相关文章推荐
javaScript中slice函数用法实例分析
Jun 08 Javascript
json的使用小结
Jun 08 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
Javascript的this用法
Jan 16 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
JavaScript实现二维坐标点排序效果
Jul 18 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 Javascript
jQuery.parseJSON()函数详解
Feb 28 jQuery
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
JS实现轮播图效果
Jan 11 Javascript
js cavans实现静态滚动弹幕
May 21 Javascript
微信小程序实现watch监听
Jun 04 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
php获取参数的几种方法总结
2014/02/18 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
jquery提示 &quot;object expected&quot;的解决方法
2009/12/13 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python常用知识点汇总
2016/05/08 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
python实现坦克大战
2020/04/24 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
C语言面试题
2013/05/19 面试题
2014年学校食堂工作总结
2014/11/25 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis