![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Coder_D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
Есть код:
Он не работает. А если объявлять каждую переменную перед циклом for, то работает. Почему? |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
видать область видимости разрывается для переменных.
кстати, а где у тебя происходит вызов функции find_cao? перед вызовом эти переменные видны? |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 7 Всего: 22 |
Потому что объявление переменных происходит сразу при инициализации содержимого тэга <script>, но элементы c id "layer", "cao", "zao" и прочие еще не определены и не инициализированы, поэтому f1, f2, f3, f4 равны undefined.
Есть некошерный способ (прямолинейный и неправильный) - объявить их после тела страницы. А можно "правильно": там, где они определены сейчас, их просто объявить как var f1, f2, f3, f4, а назначить им значения в обработчике window.onload или body.onload. На крайний случай, определить их в функции find_cao(). При этом они останутся глобальными. |
|||
|
||||
Coder_D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
Вот так выглядит весь тестовый код:
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
Coder_D, проблему и решение полностью расписана в посте IDVsbruck`а
|
|||
|
||||
Coder_D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
||||
|
||||
IDVsbruck |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 7 Всего: 22 |
В скриптах добавляешь обработчик:
Вроде так, уже и забыл - перешел давно на jQuery, там это как непрописная истина ![]() А можно и так:
|
||||
|
|||||
Coder_D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
IDVsbruck, Спасибо большое! Всё работает!
![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |