2013-07-22 2 views
0

Итак, я пытаюсь заставить свою форму работать. У меня есть две ошибки, которые я получаю, и не могу понять, где именно они происходят. Первый:Uncaught RangeError: и слишком много рекурсии

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 

Я сделал поиск на обоих, конечно, но проблемы, похоже, не относятся к тому, что ошибка в моем сценарии. У меня есть форма, которую я пытаюсь запустить, и я чувствую, что эти две проблемы, вероятно, вызывают проблему. Кнопки «clear» и «submit» не работают, пытаясь выбить проблемы, которые я знаю, и это последние два, которые у меня есть.

ОК, я нашел место, где вопрос был:

$(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: Unable to get property 'top' of undefined or null reference script.js, line 8 character 9

, что это могло быть тогда?

+0

Кажется маловероятным, что просто включение файла jQuery на вашей странице создает ошибку. Как ваш код использует библиотеку? – Fake51

+0

Оба связаны с чем-то, что-то зацикливается где-то, вероятно, навсегда, добавляя в стек до достижения предела, и появляется ошибка «слишком много рекурсии». Это не jQuery, а то, что вы сделали, вот в чем проблема. – adeneo

+0

Проблема заключается в том, что ошибка исчезает с файлом jquery. У меня есть только два файла javascript в проекте (хотя один из них очень длинный). Кажется, я не вижу проблемы с инструментом отладки, поэтому как я могу выяснить, как найти то, что повторяется? – Keith

ответ

0

Если атрибут href указывает на именованный якорь (например, <a name="foo">), который использует атрибут name, то вы не можете использовать #foo разрешить его, потому что # в селекторе соответствует id атрибут, а не атрибут по name ,

В вашем случае, поскольку #foo не существует, $('#foo').offset() будет производить пустой объект без .top.

Вы можете:

  1. Используйте id атрибут вместо name на якоре, или
  2. использовать $([name=...]) селектор (отняв от ведущих #) или
  3. магазина некоторых другие мета- данные с функцией .data() для указания нужного элемента.
+0

проблема в том, что она ссылается на эту строку $ ('html'). Animate ({не эта строка scrollTop: $ ($ (this) .attr ('href')). offset(). top. Я отключил имена, чтобы увидеть, если это сработало, и оно все еще ссылается на эту верхнюю строку как на проблему, а не на идентификационное имя. – Keith

+0

@ Если это не то, о чем вы сообщали выше, это ясно говорит, что '.top' не может быть разрешен, что означает, что' .offset() '- пустой объект, а это означает, что селектор до этого пуст. – Alnitak

+0

Прошу прощения, кто-то отредактировал ссылку на строку 8. см. выше, если только это не относится к началу функции. – Keith

Смежные вопросы