Видимость глобальной переменной
Добрый день. Помогите пожалуйста разобраться в проблеме.
Данные в глобальной переменной $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, время: 23:46. |