Cheerio在元素上调用.each()时返回undefined

我想向网站发出请求,获取它的html,并把它给予cheerio。 我需要获得类".thumb"的所有元素的所有"href"属性。 我在控制台上显示的结果,我只是得到了很多次未定义,我认为这是为每个元素find。 当我试图通过任何其他标签或标识符元素循环时,我得到了未定义,但如果我不循环,只是得到第一个正确的值给出。

  function firstReq(){ req(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each(()=>{ console.log($(this).attr("href")); }); }); } 

我试着console.log(html)来检查文件是否正常。 我也尝试在迭代上设置setTimeout ,也许给"request""cheerio"时间加载文件,仍然是一样的。 我首先尝试从url下载html文件到我的电脑(函数之外,之前调用),然后传递给cheerio,仍然未定义。

这是我与Node第一个个人项目,我很困惑。 任何帮助表示赞赏。

你可以在这里使用两种方法:

箭头function

 function firstReq(){ req(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each((i , elem)=>{ console.log($(elem).attr("href")); }); }); } 

或function:

 function firstReq(){ req(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each(function(){ console.log($(this).attr("href")); }); }); } 
 request(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each((index,a)=>{ console.log($(a).attr("href")); }); });