栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

getElementsByClassName返回[]而不是异步附加节点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

getElementsByClassName返回[]而不是异步附加节点

这是针对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友好的,就空元素的结束标记而言。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号