这是针对Firefox,Opera,Chrome和Safari的一种方法。基本上,您只需要执行div.innerHTML =
div.innerHTML即可将其内容重新解释为HTML,这会将XML文件中的类属性视为HTML类名。
<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <title></title> <script> window.addEventListener("DOMContentLoaded", function() { var div = document.getElementsByTagName("div")[0]; var req = new XMLHttpRequest(); req.onreadystatechange = function() { if (this.readyState === 4 && this.status === 200) { var doc = this.responseXML; div.appendChild(document.importNode(doc.getElementsByTagName("response")[0].getElementsByTagName("div")[0], true)); div.innerHTML = div.innerHTML; alert(document.getElementsByClassName("colorSelector").length); } }; req.open("GET", "div.xml"); req.send(); }, false); </script> </head> <body> <div ></div> </body></html>如果要在本地支持xhr的浏览器中进行本地测试,请删除this.status === 200。
importNode()函数似乎在IE中不起作用(例如9)。我收到一个模糊的“不支持接口”错误。
您也可以这样操作:
var doc = this.responseXML;var markup = (new XMLSerializer()).serializeToString(doc.getElementsByTagName("response")[0].getElementsByTagName("div")[0]);div.innerHTML = markup;只要标记是HTML友好的,就空元素的结束标记而言。


![getElementsByClassName返回[]而不是异步附加节点 getElementsByClassName返回[]而不是异步附加节点](http://www.mshxw.com/aiimages/31/406747.png)
