最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 21:00:27
文档

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

IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性_javascript技巧:如设置class属性 代码如下:el.setAttribute('class', 'abc'); 在IE6/7中样式abc将没有起作用,虽然使用el.getAttribute('class')能取到值abc。 又如for属性 代码如下: 姓名: var lab = document.getElements
推荐度:
导读IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性_javascript技巧:如设置class属性 代码如下:el.setAttribute('class', 'abc'); 在IE6/7中样式abc将没有起作用,虽然使用el.getAttribute('class')能取到值abc。 又如for属性 代码如下: 姓名: var lab = document.getElements


如设置class属性
代码如下:el.setAttribute('class', 'abc');
在IE6/7中样式“abc”将没有起作用,虽然使用el.getAttribute('class')能取到值“abc”。

又如for属性
代码如下:


var lab = document.getElementsByTagName('label')[0];
lab.setAttribute('for', 'name');


我们知道当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');

文档

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

IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性_javascript技巧:如设置class属性 代码如下:el.setAttribute('class', 'abc'); 在IE6/7中样式abc将没有起作用,虽然使用el.getAttribute('class')能取到值abc。 又如for属性 代码如下: 姓名: var lab = document.getElements
推荐度:
标签: ie6 class for属性
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top