JavaScript中的全局变量在函数中更改
嗨,我正试图改变一个函数中的全局变量,但这似乎不起作用。这是我的JS: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
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';
}