JavaScript innerHTML 不适用于 IE?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/8999998/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 08:20:48  来源:igfitidea点击:

JavaScript innerHTML is not working for IE?

javascripthtmlxmlhttprequest

提问by user1045373

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

我正在使用 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();

回答by Rich O'Kelly

The innerHTMLproperty 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:

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

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

回答by detaylor

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

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

回答by Fabricio León

Maybe you can use append(). Example:

也许你可以使用append(). 例子:

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

append()inserts content at the end of the selected element and use prepend()to insert at the beginning of the selected element.

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