JQuery选择器不能间歇性地工作

时间:2014-01-30 13:41:14

标签: javascript jquery intermittent

如果检测到“>”,我正在编写一个遍历页面的抓取工具当前页面上的类型按钮。代码在100次中失败大约1次,错误“Uncaught TypeError:无法读取未定义的属性'innerText'”。在尝试排除故障时,我打开Chrome的开发者控制台并手动测试该特定页面上的选择器。它总是返回我期望的,按钮在视觉上。我很困惑为什么它很少失败,同时它失败的页面看起来很正常。有关如何隔离问题的任何建议吗?

代码:

lastButton = $(".button a").last()[0];
if(lastButton.innerText === ">") {
    next(lastButton.href, "getFriends", id);
}

2 个答案:

答案 0 :(得分:1)

您的抓取工具在什么时候运行该选择器?如果页面尚未完全渲染,因为DOM尚未就绪,或者页面上的代码可能还没有完成构建页面,则对$(".button a").last()的调用将返回一个空数组。由于您仍然可以访问该空数组的任何索引,当您尝试从中获取第一项时,您将获得undefined,这会在您尝试调用.innerText时导致错误离开它。

尝试记录选择器返回的项目数,以确定是否属于这种情况。

答案 1 :(得分:0)

发现有问题的代码在100%的时间内都能正常运行。该问题以某种方式与我的爬虫执行不同的scrape函数有关,而不加载该函数的页面。因此,特殊的间歇性问题就在其他地方。 感谢所有试图提供帮助的人!