Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по Google Maps API 
:(
    Опции темы
HongKilDong
Дата 21.1.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Наверняка многие имели дело с Google Maps API, подскажите, как из callback функции EventListener-а получить доступ к глобальной переменной?

Код


var someVar = 'some value';

...

GEvent.addListener(map, "click", function() {

>> Как получить доступ к someVar отсюда? <<

});




Это сообщение отредактировал(а) HongKilDong - 21.1.2009, 19:40
PM MAIL   Вверх
NNaarreekk
Дата 21.1.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 2
Всего: 3



А что global someVar; не работает?
PM MAIL WWW   Вверх
HongKilDong
Дата 21.1.2009, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Этот кусок кода является частью html возвращаемого в качестве AJAX-ответа, а-ля:
Код

<div>
...
</div>
<script>
var someVar = 'some value';
...
GEvent.addListener(map, "click", function() {
...
});
</script>


и так как для организации работы с AJAX я использую Prototype библиотеку, этот скрипт выпарсивается из кода ответа средствами библиотеки и исполняется посредством eval('...содержимое тега <script>...') в scope прототайповских внутренностей... 

вообщем я уже потерялся :[

но с global конечно стоит попробовать...
PM MAIL   Вверх
Aliance
Дата 22.1.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Цитата(NNaarreekk @  21.1.2009,  21:20 Найти цитируемый пост)
А что global someVar; не работает? 

Такой конструкции в языке нет.

Небольшой лекбез по поводу видимости переменных:
  • Любая объявленная вне функции переменная - глобальная
  • Глобальные переменные видны из любого сценария, доступ к ней можно получить из любого окна
  • Объявленная внутри тела функции переменная считается глобальной только в том случае, если она объявлена без помощи ключ. слова var

Небольшой примерчик:
Код

var test = 'test 1';
test2 = 'test 2';
function myFunc()
{
    var test3 = 'test 3';
    test4 = 'test 4';
    alert( 'Доступ к переменной: ' + typeof test );
    alert( 'Доступ к глобальной переменной: ' + typeof test2 );
}
myFunc();
alert( 'Доступ к локальной переменной: ' + typeof test3 ); // переменная локальная и доступ к ней напрямую не может быть осуществлен.
alert( 'Доступ к глобальной переменной: ' + typeof test4 );


По поводу сабжа. Сам сейчас работаю с гугл-картами. У меня все прекрасно видит, правда у меня код не eval`ится. Возможно проблема в этом.

К глобальной переменной можно обратиться еще так: window[varName] - попробуй так!

P.S.: вот код, который работает у меня:
Код

$( function()
    {
        // ссылка на контейнер с контекстным меню
        menu = $( '#menu' );
            GEvent.addListener( gmaps.markers[0], 'click', function( evt )
                {
                    // ...
                    // тут идет доступ к глобальной переменной
                    menu.fadeOut( 'slow' );
                    // ...
                }
            );
    }
);

PM MAIL WWW ICQ Skype   Вверх
NNaarreekk
Дата 22.1.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 2
Всего: 3



Aliance, + вместо HongKilDong, а то он не может пока! smile 
PM MAIL WWW   Вверх
ksnk
Дата 22.1.2009, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Если ничего не помогает - попробуй так:
Код

window.someVar = 'some value';
...
GEvent.addListener(map, "click", function() {
>> Как получить доступ к someVar отсюда? <<
alert(someVar);
});



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.