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

Uncaught RangeError: and too much recursion

本文关键字:递归 RangeError      更新时间:2023-09-26

所以我正在尝试让我的表单工作。我有两个错误,我不知道它们到底发生在哪里。第一个是:

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

当然,我对这两个问题都进行了搜索,但这些问题似乎与我的脚本中的任何错误都无关。我有一个表格正在努力运行,我觉得这两个问题可能是造成问题的原因。"清除"answers"提交"按钮不起作用,所以我试图解决我知道的问题,这是我遇到的最后两个问题。

好的,我发现了问题所在:

$(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:无法获取未定义或null引用的属性"top"script.js,第8行,字符9

那会是什么呢?

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

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

你可以:

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