【问题标题】:js 'while' loop doesn't execute code insidejs'while'循环不执行里面的代码
【发布时间】: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


【解决方案1】:
document.getElementById('post-6386_119125')==null

这永远是真的!

【讨论】:

  • 直到document.getElementById('post-6386_119125')==null 才为真(当邮件到达时它是 != 0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
相关资源
最近更新 更多