首页 > 解决方案 > 没有从 jQuery 循环中获取值

问题描述

我正在尝试使用 Nightmare.js 和 jquery 获取网站上元素的文本和链接。

我正在遍历具有相同类的每个元素,我没有收到任何错误,但文本和链接是空的。

这是我尝试过的:

nightmare
        .goto("https://myanimelist.net/anime/season")
        .wait(2000)
        .evaluate(() => {
            let links = [];

            $('.link-title').each(() => {
                item = {
                    "title": $(this).text(),
                    "link": $(this).attr("href")
                };
                links.push(item);
            });

            return links;   
        })
        .end()
        .then(result => {
            console.log(result);
        })
        .catch(function (error) {
            console.error('Failed', error);
        });

控制台中的输出如下所示:

[ { title: '' }, 
  { title: '' },
  { title: '' },
  ... 99 more items 
]

标签: jquerynode.jsnightmare

解决方案


$('.link-title').each(() => {
            item = {
                "title": $(this).text(),
                "link": $(this).attr("href")
            };
            links.push(item);
        });

在 each() 方法中,请改用普通函数。箭头功能this无法按预期工作


推荐阅读