ホームページ >ウェブフロントエンド >jsチュートリアル >IE6 および IE7 の setAttribute は、class/for/rowspan/colspan_javascript スキルなどの属性をサポートしません。

IE6 および IE7 の setAttribute は、class/for/rowspan/colspan_javascript スキルなどの属性をサポートしません。

WBOY
WBOYオリジナル
2016-05-16 18:03:011148ブラウズ

たとえば、クラス属性を設定します

コードをコピーします コードは次のとおりです。
el.setAttribute(' class', 'abc' );

スタイル "abc" は IE6/7 では機能しませんが、値 "abc" は el.getAttribute('class') を使用して取得できます。

別の例は、for 属性
コードをコピーします コードは次のとおりです:


<script> <br>var lab = document.getElementsByTagName('label' )[0]; <br>lab.setAttribute('for', 'name'); <br></script>

lab が for 属性を設定するとき、 label は、対応するチェックボックスを自動的に [選択済み] に設定します。ただし、上記の設定ではIE6/7ではチェックボックスがオンになりません。

同様の状況がセルスペース/セルパディングでも発生します。概要は次のとおりです。
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',
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 ではない属性名を直接使用します。上記にリストされているものは引き続き元の属性名を使用します。最後に、これらの特殊な属性 (for や class などの JS キーワードと同じ名前) は fixAttr を使用します。
わかりました。className/htmlFor を考慮する必要はなく、class/for を使用するだけです。
コードをコピー コードは次のとおりです。

dom.setAttr(el, 'class' , 'red ');
dom.getAttr(el, 'class');
dom.setAttr(el, 'for', 'userName'); );

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。