1

私が作っているこのサイトがあります。別の関数からグローバル変数を更新したい。グローバル変数iは 0 に初期化されます。2 つの関数を作成しました。1 つはグローバル変数を更新し、アラートによって新しい値を表示する関数で、もう 1 つは更新されたグローバル変数の新しい値を警告するだけの関数です。問題は、最初の関数を呼び出すと、新しく更新された値が警告されることですが、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");
}

*ノート; function verifyInput() が最初の関数で、関数 logout が 2 番目の関数です。

4

1 に答える 1

2

最初の関数を呼び出すと、新しいページをロードしてページ コンテンツを変更します。

Javascript 変数は、あるページから別のページに保持されません。

またはを呼び出しiた後の新しい値も同様です。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 に答える