
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.03.2010, 20:29:57
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
Есть такая проблема, вот упрощенный пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Алерт все время выводит последнее значение i. Я плохо знаю javascript, как можно сделать это правильно? Пад'ехалi, лазер уключылi, i кабздец! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.03.2010, 20:36:04
|
|||
|---|---|---|---|
|
|||
Javascript: Передача параметров в функцию |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.03.2010, 20:52:34
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
Спасибо! Пад'ехалi, лазер уключылi, i кабздец! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2010, 16:02:49
|
|||
|---|---|---|---|
|
|||
Javascript: Передача параметров в функцию |
|||
|
#18+
H.A.M., Вы попались на closure, то есть на незнании внутреннего устройства javascript У вас в функции переменная i захватывалась каждым обработчиком события. Поэтому то и произошла такая штука - все кнопки ссылаись на одну и ту же переменную цикла, которая в конце равна items.length ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2010, 18:50:39
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
Угу. Вот понятная конструкция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2010, 19:07:47
|
|||
|---|---|---|---|
|
|||
Javascript: Передача параметров в функцию |
|||
|
#18+
IDVsbruck, Код: plaintext вот здесь i - это будет параметр функции-замыкания или переменная из цикла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2010, 19:15:45
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
Конечно, функции. Внутри функции переменная цикла не видна ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2010, 19:19:29
|
|||
|---|---|---|---|
|
|||
Javascript: Передача параметров в функцию |
|||
|
#18+
IDVsbruckКонечно, функции. Внутри функции переменная цикла не видна ...Тогда это будет объект события (в случае Gecko) или нулл (в случае поделки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2010, 02:51:50
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
Яростный МечТогда это будет объект события однозначно. Уже само onclick = function(i) говорит, что i будет мышекликом. А уберем (i) - получим извечное items.length. Сама тоже не люблю эти навороченные обертки с return'ами функций от текущих значений i, но все равно использую их, а не дополнительные атрибуты типа items[i].i_value. Кстати, в твоем примере по идее было бы достаточно alert('You clicked item #' + this.i_value) вместо e = e||window.event и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2010, 03:00:22
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
Блин, действительно лопухнулся ... не каждый день делаю, поторопился ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2010, 04:26:35
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
illionКстати, в твоем примере по идее было бы достаточно alert('You clicked item #' + this.i_value) вместо e = e||window.event и т.д. Это workaround для какой-то версии IE, если не ошибаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2010, 05:37:49
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
an0nym, this вроде даже в ИЕ еще не отменяли :-). Но на шестом проверить не мешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2010, 07:48:38
|
|||
|---|---|---|---|
Javascript: Передача параметров в функцию |
|||
|
#18+
illion, The value of this within the handler It is often desirable to reference the element from which the event handler was fired, such as when using a generic handler for a series of similar elements. When attaching a function using addEventListener() the value of this is changed—note that the value of this is passed to a function from the caller. In the example above, the value of this within modifyText() when called from the click event is a reference to the table 't'. This is in contrast to the behavior that occurs if the handler is added in the HTML source: view plainprint? <table id="t" onclick="modifyText();"> . . . The value of this within modifyText() when called from the onclick event will be a reference to the global (window) object. Internet Explorer In IE you have to use attachEvent rather than the standard addEventListener. To support IE, the example above can be modified to: view plainprint? if (el.addEventListener){ el.addEventListener('click', modifyText, false); } else if (el.attachEvent){ el.attachEvent('onclick', modifyText); } There is a drawback to attachEvent, the value of this will be a reference to the window object instead of the element on which it was fired. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=22&tablet=1&tid=1453299]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
201ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 505ms |

| 0 / 0 |
