JavaScript中的全局变量在函数中更改

JavaScript中的全局变量在函数中更改,javascript,html,function,variables,Javascript,Html,Function,Variables,嗨,我正试图改变一个函数中的全局变量,但这似乎不起作用。这是我的JS: var currentImg = 0; var totalImg = 0; var stored_year = 0; var newYear = 0; //the variable i want to edit $("a.work").click(function(){ var newYear = $(this).html(); // how I want it to be edited cons

嗨,我正试图改变一个函数中的全局变量,但这似乎不起作用。这是我的JS:

var currentImg = 0;
var totalImg = 0;
var stored_year = 0;
var newYear = 0;    //the variable i want to edit

$("a.work").click(function(){
    var newYear = $(this).html();   // how I want it to be edited
    console.log(newYear);
});

$("#next-button").click(function() {
    if (currentImg == totalImg) {
        currentImg = 0;
    }
    else {
        currentImg++;
    }
    changeImg();
});

$("#previous-button").click(function() {
    if (currentImg == 0) {
        currentImg = totalImg;
    }
    else {
        currentImg--;
    }
    changeImg();
});

function changeImg(galleryYear) {

    if (galleryYear === stored_year) {


        $("#gallery-image").html("<img src='" + galleryYear.x_src[currentImg] + "'>");
        $("#gallery-title").html(galleryYear.x_title[currentImg]);
        $("#gallery-medium").html(galleryYear.x_medium[currentImg]);
        $("#gallery-size").html(galleryYear.x_size[currentImg]);
        $("#gallery-date").html(galleryYear.x_date[currentImg]);

        var userCurrent = currentImg + 1;
        var userTotal = galleryYear.x_id.length;

        $("#current-post").html(userCurrent);
        $("#post-total").html(userTotal);

        var galWidth = $("#gallery-image" > "img").width();
        $("#gallery").width(galWidth);

    }
    else {

        currentImg = 0;
        $("#gallery-image").html("<img src='" + galleryYear.x_src[currentImg] + "'>");
        $("#gallery-title").html(galleryYear.x_title[currentImg]);
        $("#gallery-medium").html(galleryYear.x_medium[currentImg]);
        $("#gallery-size").html(galleryYear.x_size[currentImg]);
        $("#gallery-date").html(galleryYear.x_date[currentImg]);

        var userCurrent = currentImg + 1;
        var userTotal = galleryYear.x_id.length;

        $("#current-post").html(userCurrent);
        $("#post-total").html(userTotal);

        var galWidth = $("#gallery-image" > "img").width();
        $("#gallery").width(galWidth);

        $("#gallery-type").html('<img id="gallery-switch" alt="Kyle Breitenbach Art Gallery Icon" src="images/gallery-icon.png" onClick="gallerySwitch('+window.newYear+')">');

        stored_year = galleryYear;
    }

}

t = 100;
d = 50;

function gallerySwitch(newYear){
    $("#gallery-control-bar").fadeOut(t);
    $("#gallery-image").fadeOut(t);
    $("#info").fadeOut(t);
    $(".gallery-viewer").fadeOut(t);
    $('div.'+newYear).delay(t+d).fadeIn(t); // still not returning a number
}                                                  // other than 0.

function switchBack(){
    currentImg = parseInt($(this).attr('id'));
    alert(currentImg);

    $(".gallery-viewer").fadeOut(t);
    $("#gallery-control-bar").delay(t+d).fadeIn(t);
    $("#gallery-image").delay(t+d).fadeIn(t);
    $("#info").delay(t+d).fadeIn(t);
}

var navB = 0;

$("#mobileNav").click(function() {
    if (navB == 0) {
        $("#mobileMenu").fadeIn(t);
        navB++;
    }
    else {
        $("#mobileMenu").fadeOut(t);
        navB--;
    }
});



$(document).ready(function() {
    changeImg(galleryYear);
});
var currentImg=0;
var totalImg=0;
每一年的风险值=0;
var newYear=0//我要编辑的变量
$(“a.work”)。单击(函数(){
var newYear=$(this.html();//我希望如何编辑它
控制台日志(新年);
});
$(“#下一步按钮”)。单击(函数(){
如果(当前img==总img){
电流img=0;
}
否则{
当前img++;
}
changeImg();
});
$(“#上一个按钮”)。单击(函数(){
如果(当前img==0){
电流img=总img;
}
否则{
电流img--;
}
changeImg();
});
功能更改IMG(加仑年){
如果(galleryYear==存储年){
$(“#图库图像”).html(“”);
$(“#画廊名称”).html(galleryYear.x#u title[currentImg]);
$(“#多媒体资料”).html(galleryYear.x#u medium[currentImg]);
$(“#图库大小”).html(galleryYear.x_大小[currentImg]);
$(“#画廊日期”).html(galleryYear.x_日期[currentImg]);
var userCurrent=currentimg1;
var userTotal=galleryYear.x_id.length;
$(“#当前帖子”).html(userCurrent);
$(“#post total”).html(userTotal);
var galWidth=$(“#画廊图片”>“img”).width();
$(“#画廊”)。宽度(galWidth);
}
否则{
电流img=0;
$(“#图库图像”).html(“”);
$(“#画廊名称”).html(galleryYear.x#u title[currentImg]);
$(“#多媒体资料”).html(galleryYear.x#u medium[currentImg]);
$(“#图库大小”).html(galleryYear.x_大小[currentImg]);
$(“#画廊日期”).html(galleryYear.x_日期[currentImg]);
var userCurrent=currentimg1;
var userTotal=galleryYear.x_id.length;
$(“#当前帖子”).html(userCurrent);
$(“#post total”).html(userTotal);
var galWidth=$(“#画廊图片”>“img”).width();
$(“#画廊”)。宽度(galWidth);
$(“#图库类型”).html(“”);
储存年=厨房年;
}
}
t=100;
d=50;
功能厨房开关(新年){
$(“#图库控制栏”).fadeOut(t);
$(“#画廊图片”)。淡出(t);
美元(“#信息”)。淡出(t);
$(“.gallery viewer”).fadeOut(t);
$('div.+newYear).delay(t+d).fadeIn(t);//仍然没有返回数字
}//不是0。
函数切换(){
currentImg=parseInt($(this.attr('id'));
警报(当前img);
$(“.gallery viewer”).fadeOut(t);
$(“#图库控制栏”).delay(t+d).fadeIn(t);
$(“#画廊图片”).delay(t+d).fadeIn(t);
$(“#信息”)。延迟(t+d)。法代因(t);
}
var-navB=0;
$(“#mobileNav”)。单击(函数(){
如果(navB==0){
美元("移动"),法代因(t),;
navB++;
}
否则{
美元(“#mobileMenu”)。淡出(t);
导航--;
}
});
$(文档).ready(函数(){
更改(加仑年);
});

如何在一个函数中使变量成为全局变量?

可以有多个同名的变量,这些变量将相互隐藏。要使用现有变量时,不要添加
var

$("a.work").click(function(){
    newYear = $(this).html();
    console.log(newYear);
});

您已将var newYear=放入函数中,这将创建一个本地版本。使其仅为newYear=

如果希望newYear采用$('a.work')值,则不要在方法中再次声明newYear:


如果创建与全局变量同名的局部变量,则该变量将优先:

var newYear = 0;
$("a.work").click(function(){
    var newYear = $(this).html(); // This is not your global newYear
}
您必须使用完全限定的名称:

var newYear = 0;
$("a.work").click(function(){
    var newYear = $(this).html(); // This is not your global newYear
    window.newYear  = 'This is your global newYear';
}

但是使用globals的代码已经很难在没有重复名称的情况下进行维护。我建议您使用唯一的名称。

在函数中去掉变量的
var
var newYear = 0;
$("a.work").click(function(){
    var newYear = $(this).html(); // This is not your global newYear
    window.newYear  = 'This is your global newYear';
}