【问题标题】:comparison between innerText and a variable not workinginnerText 和变量之间的比较不起作用
【发布时间】:2018-06-26 01:30:41
【问题描述】:

我正在使用 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 与变量进行比较是否有原因?

【问题讨论】:

  • input 你在传递什么?您可以创建代码的 sn-p 吗?那会很容易调试吗?
  • 您确定input 已在范围内定义并且是您所期望的吗?显然,这段代码是不完整的,所以无论问题出在哪里,它都在缺失的地方。
  • 什么是correctSize?应该是button[i].innerText.trim()?如果你做一个sn-p会很棒。
  • 我刚刚添加了完整的代码,希望对您有所帮助!

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


【解决方案1】:

此测试correctSize[i].innerText.trim() === input 正在检查字符串值。

当您传入input 类型时,该值将不匹配。您应该使用 input.innerText 或类似名称,以便比较正确的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 2023-03-23
    • 2015-09-19
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多