2012-04-09 4 views
2

Пример кода:Как определить глобальные массивы?

<script> 
     var data = new Array(); 
     data[0] = 'hi'; 
     data[1] = 'bye'; 
</script> 

<script> 
     alert(data[0]); 
</script> 

Это дает следующее сообщение об ошибке: data is not defined

Как вы сделать что-то вроде этой работы? Особенно, если первый блок <script> загружается на страницу с помощью ajax, а второй блок работает с ним. Решение jQuery приемлемо.

+0

Пример хорошо работает в моих тестах. В исходном вопросе «Новый» вместо «нового», который не работал – dtech

+0

@dtech, он загружает первый скрипт асинхронно. это его проблема, см. мой ответ – xandercoded

+0

@ Zee Tee. Вы должны собрать [скрипку] (http://jsfiddle.net). – Alexander

ответ

6

New не является ключевым словом.

Использование:

var data = new Array(); 

Или, более лаконично:

var data = []; 

После вы редактирования вы упоминаете, что первый блок сценария загружается асинхронно. Ваш код не будет работать так, как написано. data - глобальная переменная, когда она загружается на страницу. Для правильного выполнения кода вам необходимо использовать шаблон обратного вызова.

Поскольку вы не отправили асинхронный код, я не собираюсь предоставлять образец callback. Хотя, следует быстрое решение:

var interval = setInterval(function(){ 
    if(data) { 
     /* ... use data ... */ 
     clearInterval(interval); 
    } 
}, 500); 
+0

@jlafay, Это ответ, является ли это реальной проблемой. – Alexander

+0

lol ... почему именно это не должно быть ответом? – MilkyWayJoe

+0

Я делаю 'новый' его ту же ошибку. –

1

Чтобы создать глобальную переменную, просто опустите 'var' из инструкции. Когда вы опускаете «var», вы фактически создаете переменную в пространстве имен Windows.

Так, zz = 1 на самом деле window.zz = 1

Если вы действительно хотите, вы можете явно сказать

window.data = new Array(); //remember that new should be lowercase. 

Но вы можете написать, что быстрее так или иначе говоря

data = ['hi','bye']; 
alert(data); 
+0

см. Пересмотренный код. Первый блок сценария загружен w/ajax –

0

Если вы re используя jQuery, возможно, вам стоит попробовать .getScript() вместо использования .html();

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