2014-02-16 2 views
0
function getContaineroffset(from){ 
    (from= 'diagonal') ? from= 'left' : from = 'top'; 

    var p = $("#container"); 
    var position = p.offset(); 

    return position.from; 
} 

У меня есть функция getContaineroffset(), и я хочу вернуться, например: значение position.left.Jquery getOffset функция возвращает неопределенное

Этот код возвращает undefined.

Как я могу это исправить?

ответ

1

. Оператор предназначен для использования с идентификаторами. Если вы хотите получить доступ к объекту с помощью динамической строки, вы должны использовать нотацию [].

Таким образом, вы должны заменить:

return position.from; 

с:

return position[from]; 
+0

Спасибо :) это ковшики – PiraTa

+0

@ user2992577 Вы можете выбрать этот ответ, как «принято», если вы хотите, чтобы выразить свою благодарность. – hindmost

1

Функция установки в неудобном порядке, а также не будет вести себя так, как ожидается, в течение нескольких причин.

(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]; 
} 
Смежные вопросы