我有这个网站,我正在制作。我想从另一个函数更新一个全局变量。全局变量i
初始化为0.我创建了2个函数,1表示更新全局变量并通过alert显示新值,第二个函数只是警告更新后的全局变量的新值。现在的问题是,当我调用第一个函数时,它会提醒新的更新值,但是当我调用第二个函数时,它会警告原始值为零。
这是我的代码: -
var i=0; var users=new Array();
var password=new Array();
users[0]="clydewinux";
password[0]="moonfang";
users[1]="freddipasquale";
password[1]="evastar182";
function verifyInput() { //function one
var u = login.username.value;
var p = login.password.value;
for (var c = 0; c <= 1; c++) {
if (u === users[c] && p === password[c]) {
i++;
alert(i);
window.location.replace("login.htm");
break;
} else {
document.getElementById("username").value = "Invalid username...";
window.location.href("home.htm");
break;
}
}
}
function logout() { //function two
alert(i);
window.location.replace("home.htm");
}
*注; function verifyInput()是第一个函数,函数logout是第二个函数。
答案 0 :(得分:2)
当您调用第一个函数时,您可以通过加载新页面来更改页面内容。
Javascript变量不会从一个页面保留到另一个页面。
因此,在您致电i
或window.location.replace
后,window.location.href=
是一个新值。
如果您想将某个值从一个页面保留到另一个页面,可以使用localStorage
:
var i = parseInt(localStorage['i'] || '0', 10); // loads the old saved value of i
function verifyInput() {
var u = login.username.value;
var p = login.password.value;
for (var c = 0; c <= 1; c++) {
if (u === users[c] && p === password[c]) {
i++;
localStorage['i'] = i; // stores the incremented i
alert(i);
window.location.replace("login.htm"); // this ends the script and reload the page
break; // this is useless : the script has ended
} else {
document.getElementById("username").value = "Invalid username...";
window.location.href("home.htm"); // this is buggy
break;
}
}
}
function logout() {
alert(i);
window.location.replace("home.htm");
}
附注:window.location.href("home.htm");
不起作用:使用window.location.href = "home.htm";