JavaScript - невозможно прочитать свойство 'top' из null - PullRequest
2 голосов
/ 28 октября 2011

У меня есть функция, которая прокручивает до якорной позиции в списке

   function snapToAnchor(anchor) {
    $('#divProductScroll').scrollTop(0);
    var offset = $(anchor).offset().top - $('#divProductScroll').offset().top;
    $('#divProductScroll').scrollTop(offset);
    //$('#divProductScroll').animate({ scrollTop: offset }, 250);
}

, но это иногда приводит к ошибке

, говоря Невозможно прочитать свойство 'top' из null

Я не так хорош с JavaScript

Может ли кто-нибудь помочь с этой проблемой?

Я нашел проблему. Эта функция snapToAnchor находится в диалоговой модели, поэтому во второй раз, когда я нажимаю на эту функцию, список не генерируется, поэтому у меня есть нулевое значение, поэтому перед запуском этой функции я воссоздаю модальный режим, а затем перехожу кфункция, теперь не имеет значения null.

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Якорная переменная не содержит действительного селектора для вашего сайта.Вызов offset для этого вернет null.

Пример

var a = $('#non-existing-id'); //returns empty object
var b = a.offset(); // returns null
b.top; //throws a TypeError exception

Вы можете просто отладить вашу программу, вставив alert(anchor) в строку 3.покажет вам содержимое переменной.

1 голос
/ 28 октября 2011

, если anchor имеет идентификатор элемента DOM - тогда верный способ использовать его с jQuery:

$('#' + anchor).offset()

, иначе вы получите ноль (и ошибку).

0 голосов
/ 28 октября 2011
$(anchor).offset().top

обычно выводит строку, а не число ... что-то вроде 100px.вам нужно извлечь номер из строки.

var topoffset = $(anchor).offset().top;
topoffset = topoffset.split('px', 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...