function getContaineroffset(from){
(from= 'diagonal') ? from= 'left' : from = 'top';
var p = $("#container");
var position = p.offset();
return position.from;
}
У меня есть функция getContaineroffset()
и я хочу вернуться, например: значение position.left
.
Этот код возвращается undefined
.
Как я могу это исправить?
Функция настроена неудобно, а также не будет вести себя так, как ожидалось, по нескольким причинам.
(from= 'diagonal') ? from= 'left' : from = 'top';
В первой части заявления, вы присваиваете 'diagonal'
, чтобы from
, а не проверять на равенство.
Это также может быть упрощено для чего-то подобного.
from = (from === 'diagonal')? 'left': 'top';
Наконец, position.from
получает доступ к литеральному свойству from
position
. Если вы хотите получить доступ к свойству в положении, когда ключ значения from
, вы должны использовать этот синтаксис.
position[from];
Я лично буду реализовывать эту функцию следующим образом.
function getContainerOffset(from) {
var property = (from === 'diagonal') ? 'left' : 'top';
return $('#container').offset()[property];
}
.
оператор предназначен для использования с идентификаторами. Если вы хотите получить доступ к объекту с помощью динамической строки, вы должны использовать []
нотацию.
Поэтому вам нужно заменить:
return position.from;
с:
return position[from];