Javascript 为什么这会产生一个无休止的循环并使我的浏览器崩溃?

Javascript 为什么这会产生一个无休止的循环并使我的浏览器崩溃?,javascript,jquery,loops,while-loop,Javascript,Jquery,Loops,While Loop,尝试创建一个方法,该方法将计算开始元素和结束元素之间的匹配元素数量。没什么太疯狂的。这两个控制台。日志在中间,标识为 NExtIObjest和 EnthEnEm < /Cord>。理想情况下,我会尝试在while循环调用中调用它,这样我就可以通过执行next\u item.index()

尝试创建一个方法,该方法将计算开始元素和结束元素之间的匹配元素数量。没什么太疯狂的。这两个控制台。日志在中间,标识为<代码> NExtIObjest和<代码> EnthEnEm < /Cord>。理想情况下,我会尝试在while循环调用中调用它,这样我就可以通过执行
next\u item.index()
,防止它通过
end\u elem
捕捉到它,但这显然每次都会破坏我的浏览器。我不知道为什么

  find_the_count_of_elements_between_two_elements: function(class_to_count, start_elem, end_elem) {
    var number_of_times = 0;
    var start = 0;
    var end = 1;
    next_item = start_elem.nextAll().slice(start, end);

    while ( start < 6 ) {

      // console.log(next_item.index() < end_elem.index() );
      console.log("next_item : " + next_item.index() );
      console.log("end_elem : " + end_elem.index());

      if ( next_item.hasClass(class_to_count) ) {
        number_of_times++;
      };

      start++;
      end++;
      next_item = start_elem.nextAll().slice(start, end);
      console.log(next_item);
    };
    return number_of_times;
  },
查找两个元素之间元素的计数:函数(类到计数、开始元素、结束元素){
风险值的次数=0;
var start=0;
var-end=1;
next_item=start_elem.nextAll().slice(开始,结束);
while(开始<6){
//log(next_item.index()
将JQuery对象声明为全局对象(即不使用
var
)似乎会混淆某些浏览器,因此最好将它们声明为函数的本地对象


注意:我很高兴这些信息有帮助,但是如果有人能够真正解释为什么会发生这种情况,他们应该得到解决方案标记,而不是我。

似乎您的函数find\u两个元素之间的元素的计数\u只能用于兄弟元素。这是因为您使用..index()来确定元素在DOM中相对于其同级的位置

在这种情况下,你可以实现同样的目标更便宜。我将使用filter而不是class_to_count,因为它更通用

function count_matching_elements_between(filter, start_elem, end_elem) {
    return $(start_elem).nextAll(filter).filter($(end_elem).prevAll()).length;
}
要查找具有特定类的元素,可以使用:

count_matching_elements_between('.myClass', '#myStart', '#myEnd');
或者提供显式的DOM节点或jQuery选择作为开始和结束

顺便问一下:你编辑过你的代码示例吗?
我没有看到任何“if(next_item.index()在旁注上,你考虑过吗?日志/控制台输出也会很有帮助(必要时清理它们)。有什么原因next_item没有声明为本地的吗?只是一个问题:为什么“;”在“if(){}”和“while(){}”之后?@Yoshi,说得好。我试试看。哇。太棒了!非常感谢彼得!!这真是太棒了。非常感谢。也没有编辑它。我把它作为
console.log
,从while语句中删除了它,并试图将其派生为一个日志,我认为这样可以安全地生成它。