Javascript全局变量未更新

时间:2012-10-22 17:22:00

标签: javascript

我有这个网站,我正在制作。我想从另一个函数更新一个全局变量。全局变量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是第二个函数。

1 个答案:

答案 0 :(得分:2)

当您调用第一个函数时,您可以通过加载新页面来更改页面内容。

Javascript变量不会从一个页面保留到另一个页面。

因此,在您致电iwindow.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";