2

早上好,我正在通过 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 内容?

4

2 回答 2

11

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

function () {
    if (xml.readyState == 4) {
        var container = document.implementation.createHTMLDocument().documentElement;
        container.innerHTML = xml.responseText;
        var nodeList = container.querySelectorAll('selector');
    }
}
于 2013-12-14T12:52:06.960 回答
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("...");
于 2013-12-14T12:45:59.907 回答