2011-08-29 15 views
8

最新の主なブラウザは、IEファミリを除いて動的にカスタム属性の設定/取得をサポートしています。どのようにしてすべてのブラウザでカスタム属性を設定/取得できますか?動的にカスタム属性を設定/取得する

これは私がこれまで試したものです:

HTML:

<input id="myInput" type="text" /> 

JS:どちらの場合も

var myInput = document.getElementById('myInput'); 
myInput.setAttribute('custom-attr', 'custom-value'); 
alert(myInput.getAttribute('custom-attr')); 

または

var myInput = document.getElementById('myInput'); 
var customAttr = document.createAttribute('custom-attr'); 
customAttr.value = 'custom-value'; 
myInput.setAttributeNode(customAttr); 
alert(myInput.getAttribute('custom-attr')); 

alert()戻り、すなわちnull

+0

実際に最初のコードを切り捨てても問題はありません。 MSIE 6.0と8.0で試してみましたが、「カスタム値」を正しく表示しています。 –

+0

どのバージョンのIEですか? – epascarello

答えて

12

私はIE7/8

var myInput = document.getElementById('myInput'); 
myInput.setAttribute('custom-attr', 'custom-value'); 
alert(myInput.getAttribute('custom-attr')); 

にあなたのコードをテストし、それが正常に動作します。単純なテストケースが失敗するのですか、実際には何か違うことをしていますか?

あなたが名前に-を持っていなかった場合は、ドット表記

var myInput = document.getElementById('myInput'); 
myInput.customAttr = 'custom-value'; 
alert(myInput.customAttr); 
+2

これらは実際には属性ではありません。それらは特性です。 – lonesomeday

+3

Googleで追加情報を見つけるのに役立つ注:この機能は「拡張プロパティ」と呼ばれています。 –

2

を使用することができますあなたのコードは、IE6、IE7、IE8の上だけで正常に動作ブラケット記法

var myInput = document.getElementById('myInput'); 
myInput['custom-attr'] = 'custom-value'; 
alert(myInput['custom-attr']); 

を使用することができます、FF、クロム、オペラ。

関連する問題