|
|
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Прошу не ругать, поиском не нашёл (половина из всех тем звучит как "помогите пожалуйста", и таких там 18 страниц. Бесит!) В общем есть свой таб контрол. Пара спанов + css. На загрузке страницы вешаю обработчики. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Всё бы замечательно, только вот параметр I в функцию передаётся не как значение, а как указатель на ту переменную, что использовалась в цикле (извиняюсь если не понятно выражаюсь). Я пробовал написать фунцию обёртку, чтобы засунуть туда значение, передавал I.toString()... у меня ничего не получилось. Алерт выдаёт или последнюю цифру цикла + 1 на всех табах, или undefined (это я пытался создать массив и передавать его элементы). Как это сделать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 01:44:57 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Брррр, какой синтаксис ... ты откуда пришел в javascript? Delphi? Даже рука не поворачивается использовать эти имена :) Тебе поможет банальное замыкание: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 02:07:47 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
IDVsbruckБрррр, какой синтаксис ... ты откуда пришел в javascript? Delphi? Там я живу, а тут мимо проходил ;) И у меня тоже есть свой брррр... IDVsbrucktabControl.tabs[i].tab.childNodes[0].onclick = function(){tabClick(this, i)}(i); Не фурычит. Она вместо того чтобы повесить событие его тут же вызывает. В результате на загрузке страницы я вижу по алерту на каждый таб и всё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 02:42:01 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 03:19:50 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, Illion, объясните пожалуйста зачем в конце (i) добавляете? не могу понять Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 06:43:53 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
illion, Как то так - сработало. Спасибо. Правда я ничего не понял. В целом как законченное решение (окромя функции которая вызывается, здесь пока затычка) это выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Если кто подскажет как сиё оптимизировать (про дельфи стиль уже знаю, не надо) - буду благодарен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 11:09:37 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Забыл вписать return Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 11:13:56 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Dmitry V. Nechaev Там я живу, а тут мимо проходил ;) И у меня тоже есть свой брррр... Не фурычит. Она вместо того чтобы повесить событие его тут же вызывает. В результате на загрузке страницы я вижу по алерту на каждый таб и всё... Ага, поспешил ... спасибо Татьяне, исправила. Тезка, эта синтенция называется замыканием. Мы вызываем анонимную функцию с параметром, который становится внутренней переменной, которая живет до тех пор, пока живет событие. В твоем варианте очень стремная конструкция, так как вызов внешней функции из замыкания, в которой происходят свои процессы и существуют свои переменные, чреват утечкой памяти. Это очень и очень реальная угроза. В этом случае, естественно, надо очень хорошо следить за переменными и внутренними функциями, или делать двойное замыкание (давненько его не использовал, боюсь ошибиться и буду выглядеть ну совсем некомпетентным) - это избавит от угрозы утечки. P.S. А синтаксис для js ну совсем ужасающ ... все-таки есть какие-то писанные и неписанные законы. А паскалевский (делфовский) стиль, пришедший из Фортрана, совсем не подходит. Он близок к сишному, а еще больше к джавовскому. P.P.S. Мы все где-то живем, а тут "мимо проходим" - такова уж специфика языка и его применения. Я, к примеру, из Java (начинал еще на Turbo Pascal 5 и 5.5 (?), потом Borland Pascal и TurboVision, помню первый выпуск Delphi, сидел на нем, если память не изменяет, до четверки), есть люди с ASP'а, есть Сишники, в большинстве Перловцы и ПэХаПэшники. Кстати, крайне редко кто так код большими буквами уродует :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 12:54:20 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, А что значит "следить за переменными" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 15:07:27 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Dmitry V. Nechaev Код: plaintext 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. Пожалейте браузер, вынесите функцию из цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 15:28:19 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
an0nym, Какую, из какого? Извините, но я не понимаю. Я не сильно разбираюсь в JS, и не понимаю подводных камней этого скрипта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 16:00:35 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Dmitry V. Nechaev, я уже всё написал. :) Просто посмотрите различия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 16:23:05 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
an0nymDmitry V. Nechaev, я уже всё написал. :) Просто посмотрите различия. А, точно, понял! Ваш вариант мне симпотичен, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 17:46:44 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
IDVsbruck Ага, поспешил ... спасибо Татьяне, исправила. [задумалась...] Дмитрий, а ты с какой Татьяной говорил? Если со мной, то я Ирина ;-) . Родители хотели Машей обозвать, но дед не дал, спасибо ему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2010, 01:22:04 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
Вспомнился унекдот... Двое в постели после секеса... Мужик довольно: - Я фигею, Клава! - Но я не Клава!!! - А я все равно фигею... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2010, 08:46:28 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
illion[задумалась...] Дмитрий, а ты с какой Татьяной говорил? Если со мной, то я Ирина ;-) . Родители хотели Машей обозвать, но дед не дал, спасибо ему. Падаю ниц ... стыдно. Солнышко, извини меня, плиз, попутал ... 100 лет не общались, вот и наложились какие-то параллели. Кстати, мою супругу зовут Ирина ... так что претензий к имени, как понимаешь, быть не может (а первую жену звали Татьяной). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2010, 15:50:34 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, прям оговорка по Фрейду. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2010, 15:56:07 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
an0nymIDVsbruck, прям оговорка по Фрейду. :) +1000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2010, 15:59:05 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
У-у-у, злопыхатели! Уже напостили ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2010, 16:04:05 |
|
||
|
Анонимная функция на OnClick()
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, ну а чего ты хотел от них, такой повод дал шикарный! П.С. насчет имени - это мелочи, не страшно. Даже забавно получилось, мало кто равнодушным остался, прям как бабки с семечками на лавочке у подъезда :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2010, 12:36:08 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=36530008&tid=1453364]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
297ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 590ms |

| 0 / 0 |
