JavaScriptを使用して属性を追加/更新する方法を見つけようとしています。setAttribute()
関数で実行できることはわかっていますが、IEでは機能しません。
JavaScriptを使用して属性を追加/更新する方法を見つけようとしています。setAttribute()
関数で実行できることはわかっていますが、IEでは機能しません。
回答:
あなたは読むことができ、ここで IEを含む多くの異なるブラウザ、内の属性の行動について。
element.setAttribute()
IEでも、トリックを行う必要があります。やってみましたか?それが機能しない場合は、おそらく機能する
element.attributeName = 'value'
可能性があります。
document.getElementById("nav").setAttribute("class", "active");
にすると、Chrome JSコンソールでは機能しますが、実際のページでは機能しません。ちなみに、実際のページ.js
ではbody
スコープ終了前のファイルを入れています。
完全に互換性を保ちたい場合、簡単に見えることは実際にはトリッキーです。
var e = document.createElement('div');
追加する「div1」のIDがあるとします。
e['id'] = 'div1';
e.id = 'div1';
e.attributes['id'] = 'div1';
e.createAttribute('id','div1')
これらはすべて、IE 5.5の最後のバージョン(現時点では古代の歴史ですが、更新されていないXPのデフォルトです)を除いてすべて機能します。
しかし、もちろん偶然性はあります。8より前のIEでは機能しe.attributes['style']
ません。エラーは発生しませんが、実際にはクラスが設定されません。className:である必要がありますe['class']
。
ただし、属性を使用している場合、これは機能します。e.attributes['class']
要約すると、属性はリテラルでオブジェクト指向であると考えてください。
リテラルでは、x = 'y'を吐き出して、それについて考えたくないだけです。これは、setAttribute、createAttributeの属性です(IEのスタイル例外を除く)。しかし、これらは実際にはオブジェクトなので、混乱する可能性があります。
jQuery innerHTML slopの代わりにDOM要素を適切に作成するのは難しいので、これを1つとして扱い、e.className = 'fooClass'およびe.id = 'fooID'を使用します。これは設計の優先事項ですが、この場合、オブジェクト以外のものが処理されないように処理しようとします。
他のメソッドとは異なり、クラスがclassNameであり、スタイルがオブジェクトであることを認識するだけで、style = "width:50px"ではなくstyle.widthになります。tagNameも覚えておいてください。ただし、これはcreateElementによってすでに設定されているので、心配する必要はありません。
これは思ったよりも長い時間でしたが、JSでのCSSの操作は難しい作業です。
id
、他の機能では機能しませんdata-toggle
必須のjQueryソリューション。title
属性を検索して設定しますfoo
。これはIDで行うため、1つの要素を選択しますが、セレクターを変更することでコレクションに同じ属性を簡単に設定できます。
$('#element').attr( 'title', 'foo' );