【发布时间】:2016-06-29 14:57:56
【问题描述】:
var n = 0;
function search() {
if (document.getElementById('post-6386_119125') == null) {
if (document.getElementById('show_more_link')) {
document.getElementById('show_more_link').click();
}
window.scrollTo(0, document.body.scrollHeight);
console.log('n is now ' + n);
} else {
document.getElementById('post-6386_119125').scrollIntoView()
n = 1;
console.log('horray,n is now ' + n)
}
}
while (n == 0) {
search()
}
所以有一些功能,可以在社交网络的新闻页面上查找特定帖子,如果它现在不存在:它会向下滚动页面并按下“显示下一个”按钮(如果存在)
所以......如果我去控制台并在循环之前粘贴所有行几次 - 这一切都会正常工作,但在循环中没有任何事情发生,并且控制台进入无限计数“n 现在是 0”。 我是 js 新手,也遇到了 JQuery 瘟疫,所以我可能遗漏了一些非常非常基本的东西,请见谅。
【问题讨论】:
-
n在第一个 if 块中永远不会被修改,因此如果document.getElementById('post-6386_119125') == null,search() 将继续递归调用。 -
您的
if声明始终正确,因为您从未将#post-6386_119125添加到 DOM。 -
是的,但 n 在
else块中被修改。所以这是需要停止进程的地方 -
4castle 我不需要添加这个块,因为它已经在新闻下面的某个地方了。
-
我提醒一下,当我在浏览器控制台中手动输入代码时,它工作正常。它滚动一个页面,如果需要的块存在滚动视口到它。
标签: javascript loops while-loop