姓名:

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

IE6/7中setAttribute不支持class/for/rowspan/c

系統(tǒng) 1702 0
今天在學(xué)習(xí)中遇到了在ie中設(shè)置class屬性值的bug,現(xiàn)寫出來與大家分享,一起共勉,如有錯(cuò)漏望不吝指正。

如:

elm.setAttribute('class', 'className');
在IE6/7中樣式“className”并沒有起作用,雖然使用elm.getAttribute('class')是可以獲取到“className”。
后來上網(wǎng)查了一些資料,發(fā)現(xiàn)了在ie中其實(shí)還有一部分屬性也會(huì)有這樣的問題,像for屬性





<label>姓名:</label>
<input type="checkbox" id="name"/>
<script>
??? var lab = document.getElementsByTagName('label')[0];
??? lab.setAttribute('for', 'name');
</script>
理論上如果lab設(shè)置了for屬性,點(diǎn)擊label時(shí)會(huì)自動(dòng)將對(duì)應(yīng)的checkbox選中。但在IE6/7點(diǎn)擊并沒有選中相應(yīng)的checkbox。

而且類似的情況還發(fā)生在 cellspacing/cellpadding 等屬性上,現(xiàn)列出來,大家可以認(rèn)一下,以后做的時(shí)候可以注意一下:
class
for
cellspacing
cellpadding
tabindex
readonly
maxlength
rowspan
colspan
usemap
frameborder
contenteditable

所以,當(dāng)在寫一個(gè)通用的跨瀏覽器的設(shè)置元素屬性的接口方法時(shí),我們就需要考慮注意以上屬性在IE6/7中的特殊性。
網(wǎng)上就有位朋友寫了如下方法以解決上面的問題:


































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));??????
??????? }
??? }
})();

首先,標(biāo)準(zhǔn)瀏覽器直接使用原始屬性名;其次,IE6/7非以上列舉的屬性仍然用原始屬性名;最后這些特殊屬性(與JS關(guān)鍵字同名如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/7中setAttribute不支持class/for/rowspan/colspan等屬性


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品嘿咻嘿咻在线播放 | 日韩欧美亚洲国产 | 亚洲天天做日日摸天天做 | 毛片a级放荡的护士hd | 四虎永久免费影院 | 尤物视频在线免费观看 | 女人隐私秘视频黄www免费 | 亚洲国产一区二区三区a毛片 | 私人影院免费 | 狼人香蕉香蕉在线视频播放 | 综综综综合网 | 69日本人xxxx16—18 | 久久精品国产乱子伦多人 | 中国特级黄一级真人毛片 | 99re66热这里只有精品首页 | 国产精品久久久久久久午夜片 | 精品午夜寂寞影院在线观看 | 国产深夜视频 | 国产精品99久久久久久www | 一本大道香蕉大vr在线吗视频 | 久久精品免视看国产成人2021 | 一级毛片美国一级j毛片不卡 | 日韩中文字幕在线有码视频网 | 欧美一级爱爱 | 国产大尺度福利视频在线观看 | 亚洲va欧美va国产va天堂 | 午夜在线观看cao | 日韩成人免费一级毛片 | 888午夜不卡理论久久 | 国产女人18一级毛片视频 | 亚洲第一综合色 | 欧美 日产 国产精选 | 香蕉视频国产精品 | 一本岛高清v不卡免费一三区 | 欧美成人三级视频 | 神马影院我不卡影院 | 国产伦久视频免费观看 视频 | 亚洲国产国产综合一区首页 | 免费一级特黄欧美大片勹久久网 | 国产一区二区三区久久精品 | 高清亚洲|