С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65

Как правильно объявить глобальную переменную?

20.09.2013, 23:48. Показов 1364. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть задачи вывести знак зодиака и стихию в зависимости от даты рождения. Глобальная переменная получается undefined и условия изменения ее никак на нее не влияют, т.к. выводит "Ваш знак underfined". Та же ситуация и со стихией. Подскажите, пожалуйста, что не так.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
var sign;
                  
                 var birthday = new Date();
                 var name=prompt("Введите,пожалуйста, свое имя:");                  
                
                 var day=birthday.getDay();
                 var month=birthday.getMonth();
               
 
 
                 var birth = parseInt(prompt("Здравствуйте, "+name+ ". Укажите день своего рождения.",birthday.getDay()+'-'+birthday.getMonth()));
                
                 
 
                 var sign_message = "Ваш знак зодиака ";
                 var element_message = "Ваша стихия ";
 
                        
 
               
                  var element;
                 
                 
                  if ((day >= 21 && month == 3) || (day <= 20 && month == 4)) {
                      
                         sign = "Овен";  
                     }
 
                     else if ((day >= 21 && month == 3) || (day <= 20 && month == 4)) {
                         sign == "Телец";
                     }
 
                     else if ((day >= 22 && month == 5) || (day <= 21 && month == 6)) {
                         sign == "Близнецы"; 
                     }
                     else if ((day >= 22 && month == 6) || (day <= 22 && month == 7))
 
                     { sign == "Рак";  
                     }
 
                     else if ((day >= 23 && month == 7) || (day <= 23 && month == 8))
                     {
                         sign == "Лев";  
                     }
 
                     else if ((day >= 24 && month == 8) || (day <= 23 && month == 9)) {
                         sign == "Дева"; 
                     }
 
                     else if ((day >= 24 && month == 9) || (day <= 23 && month == 10)) {
                         sign == "Весы"; 
                     }
 
                     else if ((day >= 24 && month == 10) || (day <= 22 && month == 11)) {
                         sign == "Скорпион"; 
                     }
 
                     else if ((day >= 23 && month == 11) || (day <= 21 && month == 12)) {
                         sign == "Стрелец"; 
                     }
 
                     else if ((day >= 22 && month == 12) || (day <= 20 && month == 1)) {
                         sign == "Козерог"; 
                     }
                     else if ((day >= 21 && month == 1) || (day <= 18 && month == 2)) {
                         sign == "Водолей"; 
                     }
 
                     else if ((day >= 19 && month == 2) || (day <= 20 && month == 3)) {
                         sign == "Рыбы"; 
                     }
 
                                    
 
               alert(sign_message + sign);
 
                    
 
               switch (element) {
 
                   case "Огонь":
                       element = "Огонь";
                       if (sign == "Лев" || sign == "Овен" || sign == "Стрелец")
                           alert(element_message + element);
                       break;
 
                   case "Земля":
                       element = "Земля";
                       if (sign == "Телец" || sign == "Дева" || sign == "Козерог")
                           alert(element_message + element);
                       break;
                   case "Вода":
                       element = "Вода";
                       if (sign == "Рак" || sign == "Скорпион" || sign == "Рыбы")
                           alert(element_message + element);
                       break;
                   case "Воздух":
                       element = "Воздух";
                       if (sign == "Весы" || sign == "Володей" || sign == "Близнецы")
                           alert(element_message + element);
                       break;
               }
               
 
                   
 
                 
                 alert(sign_message + sign +'\n' + element_message + element +'\n');
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.09.2013, 23:48
Ответы с готовыми решениями:

Как описать глобальную переменную
Для взаимодействия мне нужна переменная, которая была бы видна во всех страничках сайта. Как мне описать такую глобальную переменную или...

Завести глобальную переменную в JS
Подскажите, пожалуйста! Как можно в документе с фреймами в JavaScript создать переменную (например, массив объектов), которая была бы...

Обработчик события не видит глобальную переменную
Здравствуйте, кучу времени потратил, чтобы найти в чем проблема, но не нашел решения. Подскажите, пожалуйста, почему-то button.onmouseup...

8
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
21.09.2013, 01:56
метод getMonth () возвращает zero-номер месяца
т.е. январь - это 0
февраль - это 1
...
а декабрь - это 11

пользователь, зашедший к вам на страницу 12 января, увидит в prompt () строку 12-0 и ничего не поймёт
---------

даже если пользователь окажется "продвинутым" и что-то сообразит, и впишет туда свой день рождения в виде 25-3 (т.е. 25 марта)
ваш код это дело проигнорирует и далее проверять будет всё-равно дату входа клиента на страницу 12-0
ибо полученную от клиента информацию в переменной birth вы никак и нигде не используете
---------

ну и разберитесь в ваших условиях - там у вас явно напутано
например, Овен и Телец - они у вас абсолютно одинаковы, сравните две строки вашего кода:
JavaScript
1
2
     if ((day >= 21 && month == 3) || (day <= 20 && month == 4)) {sign = "Овен";}
else if ((day >= 21 && month == 3) || (day <= 20 && month == 4)) {sign == "Телец";} // здесь и везде далее у вас ошибка ==
0
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
21.09.2013, 02:08  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
метод getMonth () возвращает zero-номер месяца
т.е. январь - это 0
февраль - это 1
...
а декабрь - это 11

пользователь, зашедший к вам на страницу 12 января, увидит в prompt () строку 12-0 и ничего не поймёт
---------

даже если пользователь окажется "продвинутым" и что-то сообразит, и впишет туда свой день рождения в виде 25-3 (т.е. 25 марта)
ваш код это дело проигнорирует и далее проверять будет всё-равно дату входа клиента на страницу 12-0
ибо полученную от клиента информацию в переменной birth вы никак и нигде не используете
---------

ну и разберитесь в ваших условиях - там у вас явно напутано
например, Овен и Телец - они у вас абсолютно одинаковы, сравните две строки вашего кода:
JavaScript
1
2
     if ((day >= 21 && month == 3) || (day <= 20 && month == 4)) {sign = "Овен";}
else if ((day >= 21 && month == 3) || (day <= 20 && month == 4)) {sign == "Телец";} // здесь и везде далее у вас ошибка ==
Ну да, видимо копировала код и ошиблась, но это не меняет сути. В чем была Ваша помощь? Не совсем понятно. Ничего не подсказали, только выпендрились.
0
48 / 87 / 11
Регистрация: 12.08.2013
Сообщений: 474
21.09.2013, 02:42
undefined потому что у вас в составном операторе вместо операции присваивания, происходит операция равенства
измените:
JavaScript
1
sign == "нужныйЗнак";
на
JavaScript
1
sign = "нужныйЗнак";
1
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
21.09.2013, 02:52  [ТС]
Цитата Сообщение от Justff Посмотреть сообщение
undefined потому что у вас в составном операторе вместо операции присваивания, происходит операция равенства
измените:
JavaScript
1
sign == "нужныйЗнак";
на
JavaScript
1
sign = "нужныйЗнак";
Да, я исправила уже, все то же получается.
0
48 / 87 / 11
Регистрация: 12.08.2013
Сообщений: 474
21.09.2013, 03:03
замените так же:
JavaScript
1
2
var day=birthday.getDay();
var month=birthday.getMonth();
для примера на:
JavaScript
1
2
var month=prompt("введите месяц рождения");
var day=prompt("введите день рождения");
переменной element присвойте для примера нужное значение, чтобы инструкция switch выполнялась,
0
 Аватар для Freeden
107 / 104 / 34
Регистрация: 25.04.2012
Сообщений: 242
21.09.2013, 03:11
Вот рабочий фрагмент на март, апрель, май, дальше сами допишите на все месяца:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var userBirth = prompt("укажите ваш ДР в формате дд.мм"),
    birthArr = userBirth.split("."),
    signOfZodiac,element;
switch (birthArr[1]*1){//проверяем по месяцу
  case 3:
   if (birthArr[0]*1 > 20 ) {signOfZodiac = "Овен"; element = "Огонь";}
   else {signOfZodiac = "Рыбы"; element = "Вода";}
   break;
  case 4:
  if (birthArr[0]*1 > 20 ) {signOfZodiac = "Телец";element = "Земля";}
   else {signOfZodiac = "Овен";element = "Огонь";}
   break;
  case 5:
  if (birthArr[0]*1 > 21 ) {signOfZodiac = "Близнецы";element = "Воздух";}
   else {signOfZodiac = "Телец";element = "Земля";}
   break;
}
 
 
alert ("Знак зодиака " + signOfZodiac + " и ваша стихия " + element);
Рада бы дописать сама, но честно, очень спать хочется )) удачи
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
21.09.2013, 06:51
Цитата Сообщение от ashta Посмотреть сообщение
В чем была Ваша помощь? Не совсем понятно. Ничего не подсказали, только выпендрились.
что ж, "выпендрюсь" ещё раз

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var d = '-',
    F = function (x) {return x.split (d)},
    N = F ('Водолей-Рыбы-Овен-Телец-Близнецы-Рак-Лев-Дева-Весы-Скорпион-Стрелец-Козерог'),
    D = [20, 19, 21, 20, 21, 21, 23, 23, 23, 23, 22, 22],
    E = F ('Воздух-Вода-Огонь-Земля'),
    C = new Date,
    t = prompt ('Введите, пожалуйста, свое имя') + '. Укажите день своего рождения.',
    B = F (prompt ('Здравствуйте, ' + t, C.getDate () + d + (C.getMonth () + 1))),
    R = 31,
    T = B [0] - R + B [1] * R,
    j = 0,
    S = 11;
 
for (; j < S; j++) if (T >= D [j] + j * R && T < D [j + 1] + j * R + R) {S = j; break}
 
alert ('Ваш знак зодиака ' + N [S]);
alert ('Ваша стихия ' + E [S % 4]);
alert ('Извините за выпендрёж!');
1
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
25.09.2013, 16:14  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
что ж, "выпендрюсь" ещё раз

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var d = '-',
    F = function (x) {return x.split (d)},
    N = F ('Водолей-Рыбы-Овен-Телец-Близнецы-Рак-Лев-Дева-Весы-Скорпион-Стрелец-Козерог'),
    D = [20, 19, 21, 20, 21, 21, 23, 23, 23, 23, 22, 22],
    E = F ('Воздух-Вода-Огонь-Земля'),
    C = new Date,
    t = prompt ('Введите, пожалуйста, свое имя') + '. Укажите день своего рождения.',
    B = F (prompt ('Здравствуйте, ' + t, C.getDate () + d + (C.getMonth () + 1))),
    R = 31,
    T = B [0] - R + B [1] * R,
    j = 0,
    S = 11;
 
for (; j < S; j++) if (T >= D [j] + j * R && T < D [j + 1] + j * R + R) {S = j; break}
 
alert ('Ваш знак зодиака ' + N [S]);
alert ('Ваша стихия ' + E [S % 4]);
alert ('Извините за выпендрёж!');
)))))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2013, 16:14
Помогаю со студенческими работами здесь

В теле функции изменить глобальную переменную
Добрый день! Имеется файл main.js в котором объявлена глобальная (?) переменная data, и функция mainLoad c вложенной функцией от...

Как правильно объявить переменные в цикле?
Привет всем, у меня есть кусок кода, который надо объявлять на автомате вот этот кусок group1 = new ymaps.GeoObjectArray({ ...

Как правильно передать вторую переменную
Доброго времени суток! Есть скрипт: &lt;script&gt; $(document).ready(function(){ $('#idcat').change(function(){ $.ajax({ type:...

как правильно записать переменную из php в js
есть такой код var переменная = document.getElementById('переменная'); var hidden2 = document.getElementById('hidden2'); if(...

Объявить переменную глобально внутри функции при использовании setTimeout
Привет всем, столкнулся с не стандартным и непонятным случаем. Не судите строго js - на уровне любителя, как хобби, решения из интернета,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru