innerText和变量不起作用的比较

时间:2018-06-26 01:30:42

标签: javascript html node.js web-scraping nightmare

我正在使用nightmare.js进行网页抓取,我试图通过获取输入接收的值并向按钮添加ID的方式,如果按钮内的文本与输入匹配,则将ID添加至按钮。

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 :(得分:0)

此测试t.updatethings('hello').then(console.log).catch((err)=> {console.log("handle error")}); 正在检查字符串值。

当您传递correctSize[i].innerText.trim() === input类型时,该值将不匹配。您应该使用input或类似的名称,以便比较正确的值。