2016-11-04 4 views
0

не может понять, что не так, но мой код. Im мои ЯШ:TypeError: .offset (...) не определено

var full_url = window.location.href; 
    var parts = full_url.split("#"); 
    var trgt = parts[1]; 
    if (trgt) { 
     var aTag = jQuery("a[name='" + trgt + "']"); 
     jQuery('html,body').animate({scrollTop: aTag.offset().top}, 'slow'); 

Я получаю эту ошибку:

TypeError:. ATag.offset (...) не определено ... JQuery ("HTML, тело") анимировать ({scrollTop : aTag.offset() сверху}, "медленный")}} JQuery ("тело" ...

URL-адрес что-то вроде этого:.

http://www.myurl/my-link/#backnumber

Im мой HTML:

<a name="backnumber"></a> 

Благодаря

+0

За исключением недостающих}, ваш код работает нормально. https://jsfiddle.net/ouw6edkz/ – DinoMyte

+0

Должно быть, но dosent :( – matt

+0

вы объявили разметку после сценария? Если это так, вам нужно сначала объявить разметку, а затем скрипт – DinoMyte

ответ

0

Это говорит о том, что, как, когда запускали

var aTag = jQuery("a[name='" + trgt + "']"); 

линии, не было никакого соответствия элемента, и поэтому JQuery дал вам обратно пустой набор , Когда вы вызываете offset() на пустой набор, вы возвращаетесь undefined, и вы получаете сообщение об ошибке, пытаясь прочитать его свойство .top.

+0

. Думаю, он утверждает, что 'aTag 'не должно быть неопределенным, поскольку в его HTML, по-видимому, существует тег' a', и он вызывает его с хешем местоположения, как видно из начала сценария. По существу проблема _real_ заключается в том, что jQuery не находит свой тег 'a' – h2ooooooo

+0

Почему не должно быть подходящего элемента? Console.log (aTag); dosent not return undefined, но html тег – matt

+0

@matt: Как видно из строки выше, это не так. Это единственная ситуация, в которой 'offset 'возвращает' undefined'. –

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