![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| chertoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 28.7.2008 Репутация: 1 Всего: 2 |
Здравствуйте все!!
возникла такая проблема, есть код
почему не работает? разве нельзя передавать параметры в вункцию таким образом? |
|||
|
||||
| Dima 2015 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: нет Всего: 2 |
chertoss, передавать то параметры можно. Но если написать вот так:
Мы увидим что m есть object Window. Я так понимаю что в данном случае this, который тут onclick="setTimeout('hide(this)', 200);" уже не указывает на элемент div, а указывает на объект Window, к которому относится метод setTimeout. Хотя это только мои догадки... Просто если ты напишешь <div onclick="alert(this)">asdgfh</div> то увидишь, что алерт выведет HTMLDivElement, есть разница? Что делать.. ну можно лишь посоветовать setTimeout засунуть внутрь ф-ции hide, и вызывать так: <div onclick="hide(this);">asdgfh</div> Хотя я полагаю вопрос то как раз в том как передать элемент, на который кликаем в ф-цию setTimeout. Ну если через this никак, то можно только по id посоветовать:
|
||||
|
|||||
| chertoss |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 28.7.2008 Репутация: 1 Всего: 2 |
можно пример, не совсем понимаю, как это должно выглядеть на практике
не будет id, нужно как то через this передавать |
||||
|
|||||
| Dima 2015 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: нет Всего: 2 |
chertoss, мм.. чтото с ходу не получилось, имел в виду это:
Но это не работает, по странной причине - m видит как [object HTMLDivElement].style.display = "none"... Надо както додумывать как объект в setTimeout передать, пока чтото не додумывается, может кто поумнее подскажет... |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
|
|||
|
||||
| Dima 2015 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: нет Всего: 2 |
chertoss, разобрался. Будет работать вот так:
Смотрел только в ФФ, но надеюсь тут не должно быть с другими бразуерами проблем. Признаюсь я смутно понимаю в чем тут дело, могу лишь вилами по воде водить... но я понимаю так: запуская setTimeout мы должны в него объект передать, а переменная m внутри ф-ции div_hide() локальная, и поэтому внутри setTimeout уже не видна. Поэтому создавая глобальную переменную el и записывая в нее объект (this, который суть div на который мы кликаем) мы делаем ее видимой во всем коде... Мне конечно это кажется кривоватым, но это все что удалось придумать.. :( |
|||
|
||||
| chertoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 28.7.2008 Репутация: 1 Всего: 2 |
bars80080, твой пример не работает
Добавлено через 2 минуты и 37 секунд Dima 2015, здорово, хотя и правда странно как то ну надеюсь это именно то, что мне нужно, и далее задача решиться.. щас уже сил проверять нет |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
||||
|
||||
| Dima 2015 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: нет Всего: 2 |
bars80080, слушай дружище, может ты сам прольешь тогда свет на то как надо было использовать твой метод? А то вот я чего-то пытаюсь, тоже никак не выходит... Ну начнем с того что там у тебя видимо скобка лишняя в конце фигурная, но я вот так пытался:
В m попадает object window, и соотв. ошибка m.style is undefined А ты то что имел в виду? |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
работает это по той-же магической причине, что и пример Dima 2015, только , imho, без лишнего eval'a... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| chertoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 28.7.2008 Репутация: 1 Всего: 2 |
даа.. бывает же)) казалось бы простые вещи, а вот оно как получается..
в общем спасибо всем, кто помог (Dima 2015, bars80080, ksnk).. задача решена Это сообщение отредактировал(а) chertoss - 30.9.2008, 09:34 |
|||
|
||||
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
setTimeout(function(){chg_img(delay_clk);},delay_clk);
почему, когда я пишу так в функцию параметр передается а если писать setTimeout(chg_img(delay_clk),delay_clk); то ничего не передается ?? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
Alexey91, вы не пробовали для своих вопросов, создавать свою тему, чтобы остальным не пришлось долго читать весь текст, чтобы потом обнаружить, что вопрос совсем другой
потому что во втором случае в качестве первого параметра задаётся результат функции, а не указатель за неё. интерпретатор javascript идёт по написанным строчкам и исполняет их. во втором варианте он видит chg_img(delay_clk), исполняет её в соответствии с текущим значением delay_clk, а результат передаёт в грядущий вызов таймера. в первом случае интерпретатор видит function(){chg_img(delay_clk);}, определяет эту функцию, и передаёт в таймер указатель на неё. когда подходит время, эта функция вызывается очевидно, что если в коде написать:
то вывод будет 1, 3, 2. так как немедленному исполнению внутренности function qw() не подлежат, а только после вызова |
|||
|
||||
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Bars, я как раз хотел создать отдельную тему, но подумал, что лучше будет, если в этой
Хорошо, в следующий раз буду создавать отдельную тему.. СПАСИБО, БАРС Это сообщение отредактировал(а) Alexey91 - 5.9.2010, 14:59 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |