MSIE:将XML元素附加到HTML元素
MSIE: Append XML Element to HTML Element
我正在使用XMLHttpRequest从服务器检索XML,我想将它附加到页面上现有的HTML节点。它是格式良好的HTML,我在响应中的XML根元素中添加了xmlns='http://www.w3.org/1999/xhtml'
:对Firefox来说很好,但IE轰炸了"不支持这样的接口",我想是因为它的节点类型为"IXMLDOMElement"。
以下是XML响应:
<qstat xmlns='http://www.w3.org/1999/xhtml'>
<ul>
<li><b>Cycle number:</b> 6</li>
<li><b>Error:</b> none</li>
</ul>
</qstat>
这是Javascript:
var req = new XMLHttpRequest()
req.onreadystatechange = function() {
if(req.readyState == 4)
{
dom = req.responseXML;
var nodes = dom.firstChild.childNodes; //Everything under the root node.
var ele = document.getElementById("qstat");
for(var i=0; i<nodes.length; i++)
{
ele.appendChild(nodes[i]); // BOMBS HERE.
}
}
};
MSIE调试器(MSIE 8)正确地将nodes[0]
标识为具有tagName=ul
,甚至具有namespaceURI="http://www.w3.org/1999/xhtml"
,但我想因为它的类型是IXMLDOMElement
,所以调用不起作用。
那么,有没有办法将nodes
中的对象转换为相应的HTML节点对象,我可以将其附加到元素中?
尝试以下操作:
1) 创建HTML元素
var factory = document.createElement("div");
2) 序列化提取XML元素
var xml = nodes[i].xml || new XMLSerializer().serializeToString(nodes[i]);
3) 通过innerHTML 呈现xml
factory.innerHTML = xml;
4) 从工厂元素中获取firstChild,该元素现在是HTML元素
var eleHTML = factory.firstChild;
5) 将elemHTML附加到需要的位置:
ele.appendChild(eleHTML);
提示:您可以重用一次创建的工厂DOMHTML元素
相关文章:
- 我应该怎么做才能避免在网页上移动元素(html、css、jQuery)
- 更改元素HTML,但忽略最后一个子项
- 增加在选择元素HTML中搜索的时间
- Jquery无法获取元素html
- 从所选元素 html 上方的元素获取属性值
- 在 JS 的单选按钮元素 (HTML) 中使用 title 属性
- 如何在页面上播放每个音频元素(HTML,JQuery,Javascript)
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 获取父元素 html 以及子内容
- AngularJS指令:如何在ng-repeat中动态更改元素html
- html 属性中的引号被标记为 ”来自元素.html()的结果
- 在指令's链接中替换angular元素html
- 如果元素有子元素html元素
- 如何下推表格中的元素- HTML
- 如何在纯javascript中使用变量插入数组值,如元素HTML
- jQuery textilate .js -如何“重置”元素HTML并重新启动动画
- 将元素HTML附加到新附加的textarea中
- 在添加类的情况下,CSS 3的过渡是否不能与模板元素(HTML 5)一起工作?
- jQuery没有更新DOM元素HTML
- 在jQuery中更快地替换元素HTML