未捕获的RangeError:以及过多的递归

时间:2013-07-22 14:45:35

标签: javascript jquery

所以我想让我的表单起作用。我有两个错误,我无法弄清楚它们究竟发生在哪里。第一个是:

Uncaught RangeError: Maximum call stack size exceeded
e.extend.each
$.extend.ready
$.extend.ready
$.extend.ready... //there are literally 50+ more $.extend.ready scripts below this

这个错误必须处理jquery文件,因为我删除了另外两个以找出它来自哪里,当我删除jquery文件时错误消失了。该文件是jquery-1.7.1min.js。我不能将以后的版本用于我无法控制的目的。

,第二个是:

过多的递归:

if ($.browser.mozilla || $.browser.opera) {
document.removeEventListener("DOMContentLoaded", $.ready, false);...//the first line basically

我在这两个方面都进行了搜索,但问题似乎与我脚本中的错误无关。我有一个表单,我试图运行,我觉得这两个问题可能导致问题。 “清除”和“提交”按钮不起作用,所以试图解决我所知道的问题,这些是我拥有的最后两个。

好的,我发现问题出在哪里:

$(function () { //this is the way to run your code at the DOM Ready event

    $('a').click(function () {
        $('html, body').animate({  //this is line 8
            scrollTop: $($(this).attr('href')).offset().top
        }, 1500);
        return false;
    });

});
  

SCRIPT5007:无法获取未定义或空引用的属性“top”   script.js,第8行9字符

那可能是什么呢?

1 个答案:

答案 0 :(得分:1)

如果您的href属性指向使用<a name="foo">属性的命名锚点(例如name),则您无法使用#foo来解析它,因为{{选择器中的1}}匹配 # 属性,而不是 id 属性。

在您的情况下,由于name不存在,#foo将生成一个没有$('#foo').offset()属性的空对象。

你可以:

  1. 在锚点上使用.top属性而不是id,或
  2. 使用name选择器(剥离了前导$([name=...]))或
  3. 使用#函数存储其他一些元数据,以指向所需的元素。