Переменные - мои злейшие враги
Привет всем. Делаю програму, столкнулся с паролями... Вобщем то не в паролях дело, а в одной переменной:
var p=0; function zapros() {window.alert('p = '+p+' | из начала функции '); if (p!=1) {window.alert('p = '+p+' | если р не 1 '); if (prompt('Введите пароль.', '')=='13u') {s();p=1;}} else {window.alert('p = '+p+' | из если р - 1 ');s();}} function s() {if (confirm('В следующий раз запрашивать пароль?')==true) {p=0; window.alert('p = '+p+' | р изменён ');}} Переменная р в функции s обнуляется, но когда я снова обращаюсь к функции zapros она равна 1. Консоль ошибок невыдаёт, код тоже вроде правильный. В чём дело??? |
Для начала в форматировании кода. У вас вообще непонятно, какой код к чему относится.
|
var p=0; function zapros() { // Окно для проверки --> window.alert('p = '+p+'| из начала функции '); // Окно для проверки --> if (p!=1) { // Окно для проверки --> window.alert('p = '+p+'| если р не 1 '); // Окно для проверки --> // Окно для ввода паролей (сравниваем введённый с правильным) --> if (prompt('Введите пароль.', '')=='13u') {s();p=1;}} // Окно для ввода паролей (сравниваем введённый с правильным) --> else {// Окно для проверки --> window.alert('p = '+p+'| из если р - 1 '); // Окно для проверки --> s();}} function s() {// Спрашиваем "В следующий раз запрашивать пароль?" --> if (confirm('В следующий раз запрашивать пароль?')==true) {// Спрашиваем "В следующий раз запрашивать пароль?" --> {p=0; window.alert('p = '+p+'| р изменён ');}}} // Там где-то есть кнопка по нажатию которой запускаеттся функция zapros() ... --> |
Форматирование кода -- это не комментарии, которые зачем-то переводят код на русский язык. Это отступы и пробелы, которые помогают читать код.
А где вы обращаетесь к функции zapros? |
Вот полный код
<html> <head> <title>тест</title> <meta http-equiv="content-type" content="text/html; charset="UTF 8"> <script> var p=0; function zapros() { // Окно для проверки --> window.alert('p = '+p+'| из начала функции '); // Окно для проверки --> if (p!=1) { // Окно для проверки --> window.alert('p = '+p+'| если р не 1 '); // Окно для проверки --> // Окно для ввода паролей (сравниваем введённый с правильным) --> if (prompt('Введите пароль.', '')=='13u') {s();p=1;}} // Окно для ввода паролей (сравниваем введённый с правильным) --> else {// Окно для проверки --> window.alert('p = '+p+'| из если р - 1 '); // Окно для проверки --> s();}} function s() {// Спрашиваем "В следующий раз запрашивать пароль?" --> if (confirm('В следующий раз запрашивать пароль?')==true) {// Спрашиваем "В следующий раз запрашивать пароль?" --> {p=0; window.alert('p = '+p+'| р изменён ');}}} // Там где-то есть кнопка по нажатию которой запускаеттся функция zapros() ... --> </script> </head> <body> <input type="button" value="-для админа-" onclick=zapros()> </body> </html> З.Ы. - Цитата:
|
p < глобальная переменная
s(); < здесь вы ей устанавливаете значение 0 p=1; < а здесь снова 1 |
Ну ясно тогда.
|
Сам как то думал как и почему, пока не сказали что я локально внутри функции объявил такую же переменную))) при существовании глобальной
|
Через var надо объявлять, во-первых, а во-вторых, надо нормальные названия давать, а не однобуквенные.
|
Цитата:
|
Часовой пояс GMT +3, время: 00:39. |