1

我有我正在制作的这个网站。我想从另一个函数更新全局变量。全局变量i初始化为 0。我创建了 2 个函数,第一个用于更新全局变量并通过警报显示新值,第二个函数将仅提醒更新后的全局变量的新值。现在的问题是,当我调用第一个函数时,它会提醒新的更新值,但是当我调用第二个函数时,它会提醒原始值为零。

这是我的代码:-

 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");
}

*笔记; 函数 verifyInput() 是第一个函数,函数 logout 是第二个函数。

4

1 回答 1

2

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

Javascript 变量不会从一页保存到另一页。

调用ori后的新值也是如此。window.location.replacewindow.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";

于 2012-10-22T17:25:09.237 回答