сравнение между innerText и переменной не работает - PullRequest
0 голосов
/ 26 июня 2018

Я использую nightmare.js для веб-очистки. Я пытаюсь добавить идентификатор для кнопки, получая значение, полученное с помощью ввода, и добавляя идентификатор к кнопке, если текст внутри кнопки совпадает с вводом.

const Nightmare = require('nightmare')
const nightmare = Nightmare({ show: false })
const rp = require('request-promise');
const cheerio = require('cheerio');

var size = "9";

nightmare
  .goto('https://www.flightclub.com/')
  .type('#search', 'air jordan 1 shadow \u000d')
  .wait(1000)
  .click('.result-thumbnail')
  .evaluate(() => {
    var correctSize = document.getElementsByTagName('button');
    for (var i = 0; i < correctSize.length; i++) {
      if (correctSize[i].innerText.trim() === size) correctSize[i].id = 'thisone';
    }
  })
  .click('button[id=thisone]')
  .end()
  .catch(error => {
    console.error('Search failed:', error)
  })

Это не работает должным образом, но если в сравнении размер заменяется на «9», он работает правильно.Есть ли другой способ обойти это и есть причина, почему мы не можем сравнить innerText с переменной?

1 Ответ

0 голосов
/ 26 июня 2018

Этот тест correctSize[i].innerText.trim() === input проверяет строковые значения.

При вводе типа input значение не будет совпадать.Вы должны использовать input.innerText или подобное, чтобы сравнивать правильные значения.

...