【发布时间】:2016-07-04 04:08:32
【问题描述】:
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) {
另外,如何安装模块?
【问题讨论】:
-
r是ajax请求返回的数据。
-
仅供参考,但
find()返回一个 jQuery 对象,因此无需再次包装它:$(r).find(".BuyPriceBox .PurchaseButton").data() -
感谢@roryMcCrossan 我想知道为什么我在向下移动元素时总是必须写 .find() 但这让我意识到 XD
-
ajax 调用可以有多种响应类型。所以这个问题不清楚。
-
getElementsByClassName返回一个数组,您可以访问该数组的第一个索引,然后从 dom 中的该位置执行另一个getElementsByClassName...或者您可以按照答案中的建议使用querySelector做同样的事情。然后你需要使用dataset来获取数据。也许您可以解释您不理解或不起作用的地方,而不是愚蠢地调用提供的解决方案....
标签: javascript jquery node.js