Javascript while 循环使页面无法加载

标签 javascript jquery html loops while-loop

当我把它放在标题中时:

<script>
function checkiffinished() {
  var n = $('.result-row').length;
  while (n!==3)
  {
  n = $('.result-row').length;
  $("span").text("There are " + n + " divs.");
  };

  };
</script>

然后在正文中放

<script>
 checkiffinished();
 </script>

然后页面崩溃。

代码应该计算具有“result-row”类的 div 的数量并重复直到具有上述类的 div 的数量为 3。

我怎样才能做到这一点而不使页面崩溃?

编辑 1:页面中的其他 jQuery 导致另一个事件中有 .result-row 元素,这就是我需要定期检查它的原因。

EDIT2:我正在尝试与其他一些操纵页面元素的 jQuery 并行运行它。

最佳答案

JavaScript 一次只能运行一段代码。所以你的 while 循环阻塞了所有的 JavaScript 执行。因此,任何添加元素的代码都会被挂起——基本上永远挂起。

相反,您可能想要使用一个间隔来检查例如每秒:http://jsfiddle.net/pimvdb/sbs6m/1/ .

function checkiffinished() {
  var n = $('.result-row').length;
  $("span").text("There are " + n + " divs.");
  if(n === 3) {
    // do something
    clearInterval(interval);
  }
};

var interval = setInterval(checkiffinished, 1000); // 1000 ms = 1 second

关于Javascript while 循环使页面无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986284/

相关文章:

jquery - html 元素上的默认百分比字体大小

html - padding-top with float : right 没有结果

javascript - Jquery Fade 过渡看起来不正确

javascript - 脚本表的错误位置

javascript - 使用 `object` 创建一个 `createElement` 标签返回一个函数而不是一个对象

javascript - 如何让 img 填充视口(viewport)?

javascript - 最小谷歌地理编码器不返回任何结果

javascript - Angular 的 `@Host` 装饰器没有到达顶部?

jquery - 我只想打开一个面板(一种 Accordion 菜单)

javascript - $(this) 正在选择窗口对象而不是单击元素 jquery