Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2012, 09:57
Аватар для function
Говнокодер со стажем
Отправить личное сообщение для function Посмотреть профиль Найти все сообщения от function
 
Регистрация: 06.01.2012
Сообщений: 164

Переменные - мои злейшие враги
Привет всем. Делаю програму, столкнулся с паролями... Вобщем то не в паролях дело, а в одной переменной:

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. Консоль ошибок невыдаёт, код тоже вроде правильный. В чём дело???
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2012, 10:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Для начала в форматировании кода. У вас вообще непонятно, какой код к чему относится.
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2012, 10:17
Аватар для function
Говнокодер со стажем
Отправить личное сообщение для function Посмотреть профиль Найти все сообщения от function
 
Регистрация: 06.01.2012
Сообщений: 164

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() ... -->
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2012, 10:24
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Форматирование кода -- это не комментарии, которые зачем-то переводят код на русский язык. Это отступы и пробелы, которые помогают читать код.

А где вы обращаетесь к функции zapros?
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2012, 10:30
Аватар для function
Говнокодер со стажем
Отправить личное сообщение для function Посмотреть профиль Найти все сообщения от function
 
Регистрация: 06.01.2012
Сообщений: 164

Вот полный код

<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>


З.Ы. -
Сообщение от function
но когда я снова обращаюсь к функции zapros она равна 1
Через раз - 1 раз нормально работает а второй так.
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2012, 10:39
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

p < глобальная переменная
s(); < здесь вы ей устанавливаете значение 0
p=1; < а здесь снова 1
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2012, 10:52
Аватар для function
Говнокодер со стажем
Отправить личное сообщение для function Посмотреть профиль Найти все сообщения от function
 
Регистрация: 06.01.2012
Сообщений: 164

Ну ясно тогда.
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2012, 12:55
Интересующийся
Отправить личное сообщение для art13 Посмотреть профиль Найти все сообщения от art13
 
Регистрация: 05.12.2011
Сообщений: 17

Сам как то думал как и почему, пока не сказали что я локально внутри функции объявил такую же переменную))) при существовании глобальной
Ответить с цитированием
  #9 (permalink)  
Старый 11.01.2012, 14:31
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Через var надо объявлять, во-первых, а во-вторых, надо нормальные названия давать, а не однобуквенные.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #10 (permalink)  
Старый 11.01.2012, 17:05
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от trikadin
а во-вторых, надо нормальные названия давать, а не однобуквенные.
Узнаю себя Для меня так читается легче) Пользуюсь этим, как правило, в небольших (локальных) функциях.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сеансовые переменные faiq Серверные языки и технологии 2 24.07.2011 10:32
Нужно сравнить дробные переменные netkent Общие вопросы Javascript 1 05.12.2010 18:30
iframe не выносит переменные nemo Серверные языки и технологии 0 23.01.2010 14:25
переменные и ссылки на переменные scuter Общие вопросы Javascript 6 31.08.2008 01:24