var stuff = $($(r).find(".BuyPriceBox")).find(".PurchaseButton").data();
r是来自AJAX调用的响应 r是网页响应。
我想在JavaScript中编写上面的代码,而不是使用任何jQuery,因为node.js不允许我这样做。
我尝试了document.getElementsByClassName("BuyPriceBox")
,但我不知道如何做.find
等效并获取数据。
修改,更新
这是我试过的
var parser = new DOMParser();
var doc = parser.parseFromString(r, "text/html");
console.log(JSON.stringify(query(doc, ".BuyPriceBox .PurchaseButton").dataset))
这是对的吗?因为我刚收到错误:'TypeError: Cannot read property 'toLowerCase' of undefined'
这就是我在顶部所拥有的。
var request = require("request");
var DOMParser = require("xmldom").DOMParser; var query = require("queryselector");
我也是这样得到的请求。
request({ url: "roblox.com/A-Lucky-Presence-item?id=380201576";, method: 'GET' }, function(err, res, r) {
另外,我如何安装模块?
答案 0 :(得分:4)
$($(r).find(".BuyPriceBox")).find(".PurchaseButton").data();
应该大致翻译为
r.querySelector(".BuyPriceBox .PurchaseButton").dataset
其中r
的类型为object
(节点)。
答案 1 :(得分:0)
假设变量r
是HTML字符串或HTML元素,您必须遵循以下功能:
function parseHTML(htmlString) {
if (htmlString instanceof HTMLElement) {
return htmlString;
}
var el = document.createElement('html');
el.innerHTML = htmlString;
return el;
}
function toArray(htmlCollection) {
return [].slice.call(htmlCollection);
}
function findIn(className, parent) {
var elements = toArray(document.getElementsByClassName(className));
return elements.filter(function (element) {
isDescendantOf(element, parent);
});
}
function isDescendantOf(element, parent) {
while (element = element.parentElement) {
if (element === parent) {
return true;
}
}
return false;
}
您可以将代码重写为:
var data = [];
findIn('.BuyPriceBox', r).forEach(function (element) {
data.concat(findIn('.PurchaseButton', element).map(function (element) {
return element.dataset;
}));
});