Глобальная переменная Javascript не обновляется

У меня есть этот сайт, который я делаю. Я хочу обновить глобальную переменную из другой функции. Глобальная переменнаяi инициализируется значением 0. Я создал 2 функции: 1 для обновления глобальной переменной и отображения нового значения по тревоге, а вторая - для предупреждения о новом значении обновленной глобальной переменной. Проблема теперь в том, что когда я вызываю первую функцию, она оповещает о новом обновленном значении, но когда я вызываю вторую функцию, она предупреждает исходное значение, которое равно нулю.

Вот'мой код: -

 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 
 tobspr22 окт. 2012 г., 19:25
Как вы объявите меня? Пожалуйста, добавьте код.
 Denys Séguret22 окт. 2012 г., 19:33
Вы пытаетесь проверить пароль на стороне клиента? Это ужасная идея: этолегко обойти на стороне клиента "защиты».
 Alex Wayne22 окт. 2012 г., 19:24
Я пробежал твой кодjsbeautifier.org, Читаемый код означает, что больше людей помогут вам.
 clydewinux22 окт. 2012 г., 19:34
я вижу .. спасибо за подсказки. что я пытаюсь сделать здесь, это создать форму входа в систему, если у пользователя правильное имя пользователя и пароль, я был бы равен 1. Это значение будет регулярно проверяться при загрузке каждой страницы, чтобы увидеть, если пользователь все еще вошел в систему тамs также кнопка выхода из системы, которая при нажатии изменит значение i обратно на ноль (означает выход из системы) .. я могу 'я не новичок .. я все еще хардкор для меня .. :-(
 jfriend0022 окт. 2012 г., 19:30
FYI,i это ужасное имя для глобальной переменной. Это займет всего одинfor цикл, который используетi как это'Индекс, который забывает объявитьi как локальная переменная и ваша глобальная переменная связана. По крайней мере, выберите имя глобальной переменной, которая, вероятно, будет уникальной и не будет случайно использоваться кем-то еще. Еще лучше использоватьmodule разработать шаблон для создания одного глобального объекта с вашими глобальными переменными в качестве свойств этого объекта.
 clydewinux22 окт. 2012 г., 19:30
я объявил, что я = 0; то, что я хочу, когда пользователь нажимает кнопку входа в систему, значение I будет увеличиваться. он работает на первой функции, но не на второй, когда я пытаюсь предупредить об этом ..
 tobspr22 окт. 2012 г., 19:24
№ location.replace означает перейти к местоположению и заменить запись в истории для этой страницы на сайт, на который нужно перейти.

Ответы на вопрос(1)

вы изменяете содержимое страницы, загружая новую страницу.

Переменные 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"); Wouldn»т работа: использоватьwindow.location.href = "home.htm";

 Rym22 окт. 2012 г., 19:37
Так что'это просто учебное упражнение? Что вы планируете при входе в систему, что позволяет пользователю делать?
 clydewinux22 окт. 2012 г., 19:26
извините, я пропустил некоторые коды. поверх всех функций я объявил их: var i = 0; var users = new Array (); var password = new Array (); пользователей [0] =»clydewinux»; пароль [0] =»moonfang»; пользователи [1] =»freddipasquale»; пароль [1] =»evastar182" ;
 clydewinux22 окт. 2012 г., 19:33
я пытаюсь создать форму входа в систему, если у пользователя есть правильное имя пользователя и пароль, я был бы равен 1. Это значение будет регулярно проверяться при загрузке каждой страницы, чтобы увидеть, если пользователь все еще вошел в систему, там 's также кнопка выхода из системы, которая при нажатии изменит значение i обратно на ноль (означает выход из системы) .. я могу 'я не новичок .. я все еще хардкор для меня .. :-(
 clydewinux22 окт. 2012 г., 19:40
да, я еще студент и очень заинтересован в веб-разработке. Я хочу сделать простую форму входа, если пользователь введет правильное имя пользователя и пароль, он перенаправит на новую страницу, где пользователь может иметь права администратора, такие как редактирование сайта. Я могу отправить вам все свои файлы, если хотите.
 clydewinux22 окт. 2012 г., 19:31
так что я должен использовать вместо HREF? Я попробовал это, но он не перенаправляет на новое место. :-(
 Denys Séguret22 окт. 2012 г., 19:30
это неизменить проблему: звонюwindow.location.replace стирает все переменные страницы.
 Rym22 окт. 2012 г., 19:31
Этот дополнительный код не имеет никакого значения :) Здесь правильный dystroy, вам нужно хранить данные где-то между загрузками страниц, вы также можете использовать cookie, который лучше поддерживает браузер. В любом случае, чего вы пытаетесь достичь здесь? это нене похоже этобудет в безопасности, если это необходимо ..

Ваш ответ на вопрос