![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| antiwin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.9.2009 Репутация: нет Всего: нет |
Не могу понять следующее выражение:
h.onmouseover=new Function(this.n+'.st('+i+',true)'); а именно - this.n+'.st('+i+',true)'. Вот фрагмент кода скрипта:
То, что запись в ' ' задает функцию st (далее в рабочем файле) это да, но что значит +i+, где i длина списка??? Это сообщение отредактировал(а) antiwin - 21.10.2009, 14:07 |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 7 Всего: 22 |
Похоже, что n - объект в dd, у которого определен метод st().
Надо видеть больше кода (определение n), чтобы сказать больше. |
|||
|
||||
| Michael.de |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 22.3.2005 Где: Deutschland Репутация: 4 Всего: 9 |
1. Это почему же длина списка? ... i меняется от нуля до s.length-1 2. при i=0 кусок кода new Function(this.n+'.st('+i+',true)'); превращается в new Function(this.n.st(0,true)); ... почему сразу не написать new Function(this.n.st(i,true)); - для меня загадка. Как впрочем и это: var i=0; for(i;i<l;i++) ... уж или for(var i=0;i<l;i++) или var i=0; for(;i<l;i++) |
|||
|
||||
| antiwin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.9.2009 Репутация: нет Всего: нет |
Вот пропущенная строка. function dd(n){this.n=n; this.h=[]; this.c=[]}//document.n=n итд. Вызов в HTML: var a=dd("menu") Да, к стати, скрипт обеспечивает динамическую менюшку. Все файлы выложу позже, сейчас не доступа. |
|||
|
||||
| antiwin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.9.2009 Репутация: нет Всего: нет |
Т.е данной строкой создается функция для document.n и все это связывается с событием??? h.onmouseover=new Function(this.n.st(0,true)) |
|||
|
||||
| Michael.de |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 22.3.2005 Где: Deutschland Репутация: 4 Всего: 9 |
antiwin: не забывай, что var h=s[i].parentNode; А вообще я просто взял найденный тобой "индийский" код и убрал кавычки. Что получилось - то получилось, сорри, код ведь не мой
P.S. А такая запись - плохой стиль. Как и использование всяких document.write('что-то там'); и т.п. |
|||
|
||||
| antiwin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.9.2009 Репутация: нет Всего: нет |
Michael.de, а можно уточнить, что "индийского" в этом коде, просто я недавно в javaScript и многие вещи пока не вижу. И еще, можно прокомментировать данную строку h.onmouseover=new Function(this.n+'.st('+i+',true)');, что происходит после этого с this.n????? Это сообщение отредактировал(а) antiwin - 23.10.2009, 12:13 |
|||
|
||||
| NewDima |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 1 Всего: 12 |
Люди, ну зачем разбирать изуродованный каким-то обфускатором код? ладно, объясню, что там написано
Эта строка создает менюшку, которая будет ассоциирована с переменной menu, доступ к которой обеспечивается через document. Конкретно по двум строкам:
В данном случае для нулевого айтема меню код синонимичен следующему:
в конструктор Function передается код создаваемой функции.А он получается конкатенацией названия переменно, с которой ассоциировано меню (в нашем слуае - menu, переданное в функцию dd. дальше оператор обращения к методу ("."), имя метода и параметры, передаваемые ему this.n содержит название переменной с меню (menu) i - номер пункта меню на каждой итерации цикла. вот и получается код menu.st(индекс, true); PS. код гнилой и не достоин использования |
||||||||
|
|||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |