Видимость глобальной переменной
Добрый день. Помогите пожалуйста разобраться в проблеме.
Данные в глобальной переменной $data не сохраняются. var $data = {}; var $IntervalID =''; var $start = $('#start'); var $pause = $('#pause'); $start.on('click', function(){ //Отбираем данные и заносим их в переменную $data // Если объект $data пустой - заполняем его if ($.isEmptyObject($data)){ var $numL = $('#selectL :selected').val(); $.ajax({ type: 'POST', url: '/ajax/getData/', dataType: 'json', data: {'numL': $numL}, success: function($data){ someFunc($data); }, error: function(){ alert("Ошибка!"); } }); } else { //в противном случае продолжаем выполнение someFunc someFunc($data); } }); $pause.on('click', function(){ clearInterval($IntervalID); $IntervalID = null; }); function someFunc($data){ $IntervalID = setInterval(function(){ var $tmp = $data.shift(); $en_word.text($tmp.name); }, 1500); }; , по нажатию на кнопку $start получаем данные и запускается функция someFunc. Кнопка $pause приостанавливает выполнение someFunc, а при повторном нажатии кнопки $start цикл должен продолжиться с момента остановки. На практике получается что переменная $data "обнуляется" и AJAX опять отбирает данные и все начинается с начала. Т.е. проблема в том, что данные в переменной $data не сохраняются. |
Цитата:
|
ksa, подскажите пожалуйста, что я делаю не правильно?..
|
первое что мне бросилось сразу в глаза, так это $data.shift();
ведь $data у тебя не массив, а объект открой консоль (f12) и посмотри, на том месте у тя ошибка должна вывалиться |
skrudjmakdak, в данном случае эта конструкция работает.
|
ты в $data добавил метод shift?
|
skrudjmakdak,да. строка 33.
|
Цитата:
Цитата:
Цитата:
Цитата:
Пример var a=1; test(5); alert('global '+a) function test(a){ alert('test '+a); }; |
на 33 строке ты вызываешь метод shift. а я тебя спросил про добавление
лучше, вот, почитай про отладку: http://learn.javascript.ru/debugging-chrome да, время потратишь на изучение. но без нее оч трудно |
Цитата:
|
skrudjmakdak, большое спасибо за ссылку.
ksa, спасибо, я кажется понял в чем проблема. Можно небольшой вопросик? В данном случае.... var $data = {}; $start.on('click', function(){ $data = $.ajax({ type: 'POST', url: '/ajax/getData/', dataType: 'json', data: {'numL': $numL} }); }); , $data будет оставаться глобальной? |
Цитата:
|
пытаюсь локальную переменную присвоить глобальной....но похоже опять что-то делаю не правильно..
var $data = []; var $tmp_data = {}; $start.on('click', function(){ $.ajax({ type: 'POST', url: '/ajax/getData/', dataType: 'json', data: {'numL': $numL}, success: function($obj){ someFunc($obj); } }); }); function someFunc($obj){ $tmp_data = $.parseJSON(JSON.stringify($obj)); $data = $.makeArray( $tmp_data); var $IntervalID = setInterval(function(){ {...................} }, 1500); }; ...на выходе все равно получаю локальные переменные. |
Цитата:
Когда сработает функция someFunc() переменные $tmp_data и $data поменяют свои значения... |
Часовой пояс GMT +3, время: 05:21. |