JavaScript全局变量未更新
我在写jQuery时遇到了一些逻辑问题。我怀疑我的全局变量有问题,但我不确定问题出在哪里。我在运行时记录所有内容,出于某种原因,在我的JavaScript全局变量未更新,javascript,jquery,Javascript,Jquery,我在写jQuery时遇到了一些逻辑问题。我怀疑我的全局变量有问题,但我不确定问题出在哪里。我在运行时记录所有内容,出于某种原因,在我的rollDown()函数中,尽管我使用的是id++,但我的全局id变量没有被更新(如日志中所示) 我需要更新我的全局变量,这样当我单击header>a时,else if语句将运行,而不是再次触发rollDown() 以下是相关代码: var id = 0; var animSpeed = 0; var animDelay = 0; var working = 0;
rollDown()
函数中,尽管我使用的是id++
,但我的全局id
变量没有被更新(如日志中所示)
我需要更新我的全局变量,这样当我单击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;
});
});
您将
id
作为方法签名中定义的参数。如果删除它,全局变量将正确更新
发件人:
function rollDown(items, id) {
function rollDown(items) {
至:
function rollDown(items, id) {
function rollDown(items) {
您可能还希望删除
项,因为该项也在全局命名空间中定义。您将id
作为方法签名中定义的参数。如果删除它,全局变量将正确更新
发件人:
function rollDown(items, id) {
function rollDown(items) {
至:
function rollDown(items, id) {
function rollDown(items) {
您可能还希望删除项,因为这也是全局命名空间中定义的。当您使用名称id输入函数变量时,如下所示:函数回滚(项,id)
您运行全局变量
使用:
当您输入名为id的函数变量时,如下所示:function rollDown(items,id)
您运行全局变量
使用:
+1.请注意,使用全局名称空间并不是最好的做法,这可能会有所帮助。+1。请注意,使用全局名称空间并不是最好的做法,这可能会有所帮助。