Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить значение из обработчика события (https://javascript.ru/forum/misc/28963-poluchit-znachenie-iz-obrabotchika-sobytiya.html)

mirek 08.06.2012 20:25

Получить значение из обработчика события
 
Имеем:
function(){
ГлобальныйМассив[0]="какое-то значение"
}

Так не работает.

А как передать значение из обработчика событий ?

Deff 08.06.2012 20:32

Цитата:

Сообщение от mirek
function(){ГлобальныйМассив[0]="какое-то значение"}

Хм - приведите пример, и Вы учтите - что считывать переменную нужно тоже по событию, или по заведомо превышаюшему таймеру, - поскольку: Вы можете читать - а там пусто, посколь обращения к обработчику еще не было

mirek 08.06.2012 20:36

Цитата:

Сообщение от Deff
Хм - приведите пример

Ну вот я его привел. Можно перевести латинскими буквами разве что:)
Просто записать в переменную глобального массива GlobalArray[0] = "some value"

Даже такой код не работает

На счет пусто то я уже делал и с задержкой setTimeout("alert(GlobalArray[0])", 9000);

И так не работает. Значение = undefined

dmitriymar 08.06.2012 20:41

ну дак учтите что функция обработчик вешается на событе.
знак = подразумевает что результат возвращается вызвавшему,но здесь реакция на событие-так что глупо ожидать что событию вызвавшему эту функцию присвоиться значение по ретурну,а если да что с ним делать? Что значит глобальный массив?
т.е вы думаете что что создастся глобальное внутри функции?-нет. может создаться свойство объекта window если если вы к нему обратитесь и его до этого не существовало. так,мысли вслух.Но наверное не предусмотрено что создаться свойство какое массив,поставил бы на то что создаться свойство какое объект,но мало вероятно-могу ошибаться во всём -тема не паханная. Все знают что при обращении к несуществующему создаться свойство...
выход -создать ручками глобальный массив и обращаться к нему внутри функции

mirek 08.06.2012 20:47

Цитата:

Сообщение от dmitriymar
выход -создать глобальный массив и обращаться к нему внутри функции

Ну вот в моем примере так и есть

GlobalArray ранее объявлен между тегами <head> <script type="text/javascript">GlobalArray = new Array();</script></head>

Deff 08.06.2012 20:52

Цитата:

Сообщение от mirek
Ну вот я его привел.

<span   onclick="ClickFunc(); return false;">Клик функция</span>
<script type="text/javascript">
var Glob_arr=new Array,index=0;
function ClickFunc(){
 Glob_arr.push(index);
 index++;
 alert(Glob_arr);
}
</script>

dmitriymar 08.06.2012 20:57

глобальное создаётся
var GlobalArray = new Array()

всё остальное это свойство window.
var a== this.a==window.a -не во всяком контексте
но, var a!== this.a!==window.a -в смысле контексты разные
попробуйте через контекст,через window,объявляя глобальным массивом... либо у вас гдето ошибка возникает до этого и код не обратывается. поставьте alert(1) перед записью в массив -если не сработает -значит ошибка ранее,смотрите фаирбаг или подобные инструменты отладки....

dmitriymar 08.06.2012 21:11

<span   onclick="ClickFunc(); return false;">Клик функция</span>
<script type="text/javascript">
var Glob_arr=new Array();
var index=-10;
function ClickFunc(){
 Glob_arr.push(index);
 index++;
alert(Glob_arr[0])
 alert(index);
 alert(this.index)
alert(window.index)
alert(this.index===index)
alert(window.index==index)
alert(this.index===window.index)
}
</script>

mirek 08.06.2012 21:23

У меня udefined

Ошибок в консоли ошибок нет

dmitriymar 08.06.2012 21:29

ну дак это должно о многом вам сказать. смотрите ваш код либо выкладывайте тестовый-сами видите тестовый выше работает


Часовой пояс GMT +3, время: 16:39.