2011-08-29 35 views
8

Trình duyệt hiện đại chính hỗ trợ thiết lập/truy xuất thuộc tính tùy chỉnh động, ngoại trừ gia đình IE. Làm cách nào để tôi có thể đặt/nhận thuộc tính tùy chỉnh của mình trong tất cả các trình duyệt?đặt/nhận thuộc tính tùy chỉnh động

Đây là những gì tôi đã cố gắng cho đến nay:

HTML:

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

JS:

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

hoặc

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

Trong cả hai trường hợp IE alert() lợi nhuận null.

+0

Tôi thực sự không thấy sự cố với mã đầu tiên của bạn bị cắt. Đã thử nó trong MSIE 6.0 và 8.0, hiển thị "giá trị tùy chỉnh" một cách chính xác. –

+0

Phiên bản IE nào? – epascarello

Trả lời

12

Tôi đã thử nghiệm mã của bạn trên IE7/8

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

và nó chạy tốt. Liệu trường hợp thử nghiệm đơn giản đó có thất bại cho bạn hay bạn thực sự đang làm điều gì đó khác biệt?

Bạn có thể sử dụng ký hiệu khung

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

Nếu bạn không có - trong tên, bạn có thể sử dụng ký hiệu dấu chấm

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

Đó không phải là thuộc tính; họ là tài sản. – lonesomeday

+3

Lưu ý để giúp tìm thông tin bổ sung trên Google: tính năng này được gọi là "thuộc tính expando". –

2

Mã của bạn làm việc tốt trên IE6, IE7, IE8 , FF, Chrome, Opera.

Các vấn đề liên quan