2012-01-25 44 views
5

Tôi đang sử dụng cuộc gọi ajax cho để đưa danh sách cho thả tôi xuống và gán nó vào html, hoạt động tốt cho mozilla nad crome nhưng đối với IE nó sẽ hiển thị một danh sách thả xuống trốngJavaScript innerHTML không hoạt động đối với IE?

var xmlhttp; 

var strURL = "selectedu.php?selectward="+selectward; 

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange = function(){ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     if(xmlhttp.responseText=="NOER") 
     { 
      alert("Select ER Type"); 
     } 
     else 
     { 
      document.getElementById(id).innerHTML=xmlhttp.responseText; 
     } 
    } 
} 
xmlhttp.open("GET",strURL,true); 
xmlhttp.send(); 
+0

Bạn có thể đăng thêm một số mã cho điều này không? Nếu có thể, hãy thử http://jsfiddle.net –

+0

bạn có thể nêu chi tiết: tagName nào là phần tử của bạn và cách bạn tạo và thực hiện cuộc gọi XHR của mình? – BiAiB

+0

Bạn có thể hiển thị thêm mã cho chúng tôi không? – Oybek

Trả lời

7

Thuộc tính innerHTML có một số vấn đề trong IE khi cố gắng thêm hoặc cập nhật các yếu tố hình thức, thực hiện giải pháp là tạo ra một div và thiết lập các tài sản trên đó innerHtml trước phụ thêm vào DOM:

var newdiv = document.createElement("div"); 
newdiv.innerHTML = xmlhttp.responseText; 
var container = document.getElementById(id); 
container.appendChild(newdiv); 
4

Nếu tài liệu là XHTML IE sẽ không cho phép innerHTML bất động sản được đặt trực tiếp. Bạn sẽ cần phân tích cú pháp responseText thành các phần tử DOM và thay thế nội dung của phần tử hiện tại bằng các phần tử đó.

0

Có thể bạn có thể sử dụng append(). Ví dụ:

$get('yourTargetObjectId').append('<p>this test to add</p>'); 

append() chèn nội dung ở cuối của phần tử được lựa chọn và sử dụng prepend() để chèn vào đầu của phần tử được chọn.

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