JavaScript innerHTML不能用于IE吗?

时间:2012-01-25 08:59:34

标签: javascript html xmlhttprequest

我正在使用ajax调用为我的下拉列表并将其分配给html,对于mozilla和chrome工作正常但是对于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 个答案:

答案 0 :(得分:8)

在尝试添加或更新表单元素时,innerHTML属性在IE中存在一些问题,解决方法是在附加到DOM之前创建div并在其上设置innerHtml属性:

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

答案 1 :(得分:4)

如果文档是XHTML,IE将不允许直接设置innerHTML属性。您需要将responseText解析为DOM元素,并用这些元素替换现有元素的内容。

答案 2 :(得分:0)

也许你可以使用append()。 例如:

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

append()在所选元素的末尾插入内容,并使用prepend()插入所选元素的开头。