2013-11-13 3 views
0

У меня возникло несколько проблем, и я думаю, что это из-за того, как я объявляю массив. Я использую jQuery, и я хочу объявить глобальный массив, чтобы я мог использовать его элементы внутри своих функций. То, как я это делаю сейчас, когда я пытаюсь использовать элементы в функции, они ограничены. Я сделал журнал консоли массива и, кажется, показывают, что у него есть вещи в нем (даже вещи, которые я хочу), но потом, когда я выполнять функции JQuery на тех элементов, которые он говорит мнеОбъект глобального массива Javascript не может быть прочитан

Не удается прочитать свойство " top 'of undefined

Кроме того, я не использовал массивы в JS только на C++, так что, возможно, есть проблема с моим синтаксисом? Вот черновик кода у меня есть:

var pigs = new Array(); 
pigs[0] = $('#foo'); 
pigs[1] = $('#bar'); 

$(document).ready(function(){ 
    console.log(pigs); 
    var topCoord = pigs[0].offset().top; 
}); 
+1

Существует ли $ ('# foo')? – OlivierH

+1

'$ ('# foo')' не возвращать элемент до 'document.ready' – philipp

+0

Прежде всего, у вас есть«

»и«
» – ElSinus

ответ

2

Я думаю $('#foo') и $('#bar') возвращают пустые объекты JQuery. Вы должны дождаться готовности DOM до его запроса:

var pigs = new Array(); 
$(document).ready(function(){ 
    pigs[0] = $('#foo'); 
    pigs[1] = $('#bar'); 
    console.log(pigs); 
    var topCoord = pigs[0].offset().top; 
}); 
+0

Если я назначу эти значения в этой функции, смогу ли я по-прежнему использовать эти объекты и значения в других функциях ? Другими словами, если я изменю его внутри этой функции, он будет изменен в глобальном масштабе, а? – mavsman

+0

Да, сэр. Добро пожаловать в Javascript ;-) – riyuk

+0

, чтобы использовать $ ('# foo') и $ ('# bar'), документ должен быть готов – ElSinus

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