JavaScript innerHTML не работает для IE?

Я использую ajax-вызов, чтобы вывести список для моего выпадающего списка и назначить его html,отлично работает для mozilla nad crome, но для 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();

3 ответов


на innerHTML свойство имеет некоторые проблемы в IE при попытке добавить или обновить элементы формы, обходным путем является создание div и установить свойство innerHtml на это перед добавлением к DOM:

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

Если документ XHTML IE не позволит innerHTML свойство должно быть установлено напрямую. Вам нужно будет разобрать responseText в элементы DOM и замените содержимое существующего элемента этими элементами.


возможно, вы можете использовать append(). Пример:

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

append() вставляет содержимое в конец выбранного элемента и использует prepend() вставить в начале выбранного элемента.