【问题标题】:querySelectorAll() to html from another pagequerySelectorAll() 从另一个页面到 html
【发布时间】:2013-12-14 12:38:29
【问题描述】:

早上好, 我正在通过 AJAX 获取另一个页面的 html:

var xml = new XMLHttpRequest()
xml.onreadystatechange = function () {
    if (xml.readyState == 4) {
        // here I need to work with data
        // xml.responseText
    }
}
xml.open("GET", url, false);
xml.send(null)

如何将 querySelectorAll() 应用于另一个页面的 html 内容?

【问题讨论】:

    标签: javascript html ajax selectors-api


    【解决方案1】:

    您可以创建新文档并将responseText 放入其中。然后你可以使用querySelectorAll()。这是你的onreadystatechange 函数:

    function () {
        if (xml.readyState == 4) {
            var container = document.implementation.createHTMLDocument().documentElement;
            container.innerHTML = xml.responseText;
            var nodeList = container.querySelectorAll('selector');
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您的响应是有效的 XML,您可以尝试xml.responseXml

      如果不是这样,您可以考虑使用DocumentFragment

      var doc = document.createDocumentFragment();
      var div = document.createElement("div");
      div.innerHTML = xml.responseText;
      doc.appendChild(div);
      
      var nodes = doc.querySelectorAll("...");
      

      【讨论】:

      • 你能解释一下createDocumentFragment()createHTMLDocument()之间的实际区别吗?
      • @Pavlo 好问题!根据MDN's example,如果要最终显示HTML,还必须将创建的文档复制(“导入”)到当前网站的文档中。
      猜你喜欢
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      相关资源
      最近更新 更多