Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript innerHTML is not working for IE?

I am using ajax call for to bring the list for my drop down and assign it to html,works fine for mozilla nad crome but for IE it displays a blank dropdown

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();
like image 380
user1045373 Avatar asked Jan 25 '12 08:01

user1045373


2 Answers

The innerHTML property has some problems in IE when trying to add or update form elements, the workaround is to create a div and set the innerHtml property on that before appending to the DOM:

var newdiv = document.createElement("div");
newdiv.innerHTML = xmlhttp.responseText;
var container = document.getElementById(id);
container.appendChild(newdiv);
like image 55
Rich O'Kelly Avatar answered Sep 21 '22 14:09

Rich O'Kelly


If the document is XHTML the IE will not allow the innerHTML property to be set directly. You would need to parse the responseText into DOM elements and replace the contents of the existing element with those elements.

like image 30
detaylor Avatar answered Sep 24 '22 14:09

detaylor