Получить значение из обработчика события
Имеем:
function(){ ГлобальныйМассив[0]="какое-то значение" } Так не работает. А как передать значение из обработчика событий ? |
Цитата:
|
Цитата:
Просто записать в переменную глобального массива GlobalArray[0] = "some value" Даже такой код не работает На счет пусто то я уже делал и с задержкой setTimeout("alert(GlobalArray[0])", 9000); И так не работает. Значение = undefined |
ну дак учтите что функция обработчик вешается на событе.
знак = подразумевает что результат возвращается вызвавшему,но здесь реакция на событие-так что глупо ожидать что событию вызвавшему эту функцию присвоиться значение по ретурну,а если да что с ним делать? Что значит глобальный массив? т.е вы думаете что что создастся глобальное внутри функции?-нет. может создаться свойство объекта window если если вы к нему обратитесь и его до этого не существовало. так,мысли вслух.Но наверное не предусмотрено что создаться свойство какое массив,поставил бы на то что создаться свойство какое объект,но мало вероятно-могу ошибаться во всём -тема не паханная. Все знают что при обращении к несуществующему создаться свойство... выход -создать ручками глобальный массив и обращаться к нему внутри функции |
Цитата:
GlobalArray ранее объявлен между тегами <head> <script type="text/javascript">GlobalArray = new Array();</script></head> |
Цитата:
<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> |
глобальное создаётся
var GlobalArray = new Array() всё остальное это свойство window. var a== this.a==window.a -не во всяком контексте но, var a!== this.a!==window.a -в смысле контексты разные попробуйте через контекст,через window,объявляя глобальным массивом... либо у вас гдето ошибка возникает до этого и код не обратывается. поставьте alert(1) перед записью в массив -если не сработает -значит ошибка ранее,смотрите фаирбаг или подобные инструменты отладки.... |
<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> |
У меня udefined
Ошибок в консоли ошибок нет |
ну дак это должно о многом вам сказать. смотрите ваш код либо выкладывайте тестовый-сами видите тестовый выше работает
|
GlobalArray = new Array(); Test = 0; $("#block").find("*").each(function(){ GlobalArray.push("test value"); Test = 55; }); alert( GlobalArray[0]); alert( Test); ВОТ ТАК НЕ РАБОТАЕТ! |
mirek,
alert должен вызываться после клика, до клика Ваш массив пуст, Поэтому алерт должен вызываться после совершения событий(я ж уже говорил) скрипт исполняется сразу - алерт вызвался - клика еще не было |
Цитата:
$("#block").find("*")проходит по всем ф-циям #block При чем если там поставить $(this).attr("id", "NewID") то id например меняется То есть там о событии onclick нет речи |
ИЗВИНИТЕ!!!
Работает прекрасно если код бы был действительно таким GlobalArray = new Array(); Test = 0; $("#block").find("*").each(function(){ GlobalArray.push("test value"); Test = 55; }); alert( GlobalArray[0]); alert( Test); Но не работает в этом случае: GlobalArray = new Array(); Test = 0; $("#block").find("*").each(function(){ if(typeof $(this).attr("id") != "undefined") { if($(this).attr("id").indexof("MyID") != -1) { GlobalArray.push("test value"); Test = 55; } } }); alert( GlobalArray[0]); alert( Test); Но мне как раз надо записать в массив если id определен и равен MyID |
Цитата:
Так будет быстрее |
Цитата:
var a = $("#block") var b = a.length; GlobalArray = new Array() if(b){b.find("*").each(function(){ GlobalArray.push("test value"); Test = 55; }); alert( GlobalArray[0]); } else alert("Элемент '#block' - Не найден"); |
Извините снова!!!
РАЗОБРАЛСЯ!!! ТЕМА НЕ АКТУАЛЬНА!!! Просто на момент проверки if($(this).attr("id").indexof("MyID") != -1) На странице ни одного элемента с таким id не было :-E :-/ |
Часовой пояс GMT +3, время: 23:52. |