Не получать значения из цикла jQuery - PullRequest
1 голос
/ 08 июня 2019

Я пытаюсь получить текст и ссылку на элемент на веб-сайте, используя 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 
]

1 Ответ

1 голос
/ 08 июня 2019
$('.link-title').each(() => {
            item = {
                "title": $(this).text(),
                "link": $(this).attr("href")
            };
            links.push(item);
        });

Внутри метода each () вместо этого используйте обычную функцию. Функции стрелок заставляют this работать не так, как вы ожидали

...