У меня возникли некоторые проблемы с логикой jQuery, которую я пишу. Я подозреваю, что делаю что-то не так с моими глобальными переменными, но я не совсем уверен, в чем проблема. Я регистрирую все, так как он работает, и по какой-то причине в моей функции rollDown()
, хотя я использую id++
, моя глобальная переменная id
не обновляется (как показано в журналах).Глобальные переменные JavaScript, не обновляемые
Мне нужно обновить мою глобальную переменную, чтобы при щелчке header > a
оператор else if
запускал вместо очередного выстрела rollDown()
.
Вот соответствующий код:
var id = 0;
var animSpeed = 0;
var animDelay = 0;
var working = 0;
var items = 0;
function logs() {
"use strict";
console.log('id: ' + id);
console.log('-----');
console.log('animSpeed: ' + animSpeed);
console.log('-----');
console.log('animDelay: ' + animDelay);
console.log('-----');
console.log('working: ' + working);
console.log('==============');
}
function rollDown(items, id) {
"use strict";
var dist = $('li').eq(id).outerHeight(), slideDown = {'margin-top' : '+=' + dist + 'px'};
console.log('items: ' + items + ' & id: ' + id);
if (id <= items) {
if (id === 0) {
$('#toggle').html('Hide ↑');
}
$('li').not($('li').eq(id).prevAll()).delay(animDelay).animate(slideDown, animSpeed);
id++;
logs();
rollDown(items, id);
} else {
console.log('herp derp');
logs();
}
}
function getVals() {
"use strict";
animSpeed = $('#speed').val();
animDelay = $('#delay').val();
}
function resetPosition() {
"use strict";
$('li').stop().css('margin-top', 0);
id = 0;
working = 0;
$('#toggle').html('Show ↓');
}
$(function() {
"use strict";
$('header > a').click(function() {
if (id === 0 && working === 0) {
getVals();
items = $('ul').children().length;
var z;
for (z = 0; z < items; z++) {
$('li').eq(z).css('z-index', items - z);
}
working = 1;
rollDown(items, id);
} else if (id !== 0) {
resetPosition();
alert('!!');
}
return false;
});
});
Вот что моя консоль печатает:
items: 6 & id: 0
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
items: 6 & id: 1
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
items: 6 & id: 2
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
items: 6 & id: 3
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
items: 6 & id: 4
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
items: 6 & id: 5
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
items: 6 & id: 6
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
items: 6 & id: 7
herp derp
id: 0
-----
animSpeed: 410
-----
animDelay: 20
-----
working: 1
==============
** + 1 ** Может быть полезно отметить, что использовать глобальное пространство имен не самое лучшее, что можно сделать. – gdoron