我在创建全局变量时遇到问题,并通过jquery重置它。这是我的代码
var x = 1;
$(document).ready(function () {
$("#button").click(function () {
if(x === 1) {
alert("test1");
var x = 2;
} else if(x === 2) {
alert("test2");
var x = 3;
} else {
alert("test 3");
}
});
});
我希望能够点击相同的按钮三次并显示所有测试,但它会直接转到最后一个选项"test 3"
。如果这是一个愚蠢的问题我很抱歉,但我对jquery和javascript有点新鲜。
答案 0 :(得分:3)
只需从click事件回调中的变量赋值中删除var
即可。 var
使变量本地变为该范围/闭包。
if (x === 1) {
alert("test1");
x = 2;
}
else if (x === 2) {
alert("test2");
x = 3;
}
else {
alert("test 3");
}
作为一个侧点,第一个var
不是必需的,var x = 1
和x = 1
在代码不在闭包/函数中时会做同样的事情。他们所做的就是分配window.x = 1
。