![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
MagicDew |
|
||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 12.4.2010 Репутация: нет Всего: нет |
Добрый день, Уважаемые форумчане!
Я начинаю изучать JavaScript и хотелось бы решить следующую задачу: на странице есть несколько участков текста, облаченных в тег <p></p> и ссылка-кнопка, при нажатии на которую у текста свойство "opacity" должно ПЛАВНО уменьшиться с 1 до 0.4. Вот то, что я смог наваять:
Вот суть проблемы: я не понимаю как работает функция setTimeout() и как получить и проверить текущее значение свойства "opacity" Это сообщение отредактировал(а) MagicDew - 17.10.2011, 11:05 |
||||
|
|||||
mcTep |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 25.2.2009 Репутация: 1 Всего: 6 |
setTimeout(foo, duration) говорит браузеру выполнять функцию foo c интервалом в duration миллисекунд. В foo вам надо передать именно функцию, которая будет выполняться с этим интервалом. Сейчас у вас `setOpacity(i)` это вызов функции, в результате которой возвращается какое-то значение, которое вряд ли будет функцией, судя по вашему примеру.
Т.е. в вашем примере просто произойдет несколько вызовов фунции setOpacity и, увы, больше ничего. Сделать стоит примерно следующее:
Здесь мы заводим обработчики для каждого параграфа, и создаем ссылку на них в par.animationInterval для каждого элемента. При достижении значения 0.4 и меньше, мы этот обработчик сбрасываем через clearInteval. Это сообщение отредактировал(а) mcTep - 17.10.2011, 14:35 |
|||
|
||||
MagicDew |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 12.4.2010 Репутация: нет Всего: нет |
Поясните пожалуйста вот этот код:
и как вызывать и работать с этим функциями? |
|||
|
||||
mcTep |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 25.2.2009 Репутация: 1 Всего: 6 |
Здесь мы берем нужные параграфы, потом проходясь по циклу каждому параграфу в свойство animationInterval добавляем интервал вызова функции downgradeOpacityForPar, в которой с интервалом 100 миллисекунд понижаем прозрачность конкретного параграфа.
Этот участок кода можно обрамить в функцию и вызвать ее при, например при клике или когда вам угодно.
|
||||
|
|||||
$дмитрий |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 5 Всего: 45 |
Небольшая оптимизация
Можно заменить на
|
||||
|
|||||
mcTep |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 25.2.2009 Репутация: 1 Всего: 6 |
Данный подход подобен использованию eval(), где текст выполняется как код. Данный подход не рекомендуется.
|
|||
|
||||
$дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 5 Всего: 45 |
Не вижу смысла в функции которая не делает ничего, кроме вызова другой функции
![]() |
|||
|
||||
mcTep |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 25.2.2009 Репутация: 1 Всего: 6 |
Ваш пример делает тоже самое
![]() Добавлено через 6 минут и 32 секунды К томуже эта функция вызывает другую в нужном нам окружении. Мы могли бы конечно сделать что-то вроде
и в downgradeOpacity обращаться к параграфу через this. |
|||
|
||||
MagicDew |
|
||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 12.4.2010 Репутация: нет Всего: нет |
Уважаемые mcTep и $дмитрий, спасибо, что отозвались, но, увы, приведенный вами код у меня не работает. Вот то, что я написал по вашим советам:
|
||||
|
|||||
Absinthe |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: нет Всего: 11 |
|
||||
|
|||||
MagicDew |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 12.4.2010 Репутация: нет Всего: нет |
Проблема осталась не решенной, помогите, плиз
|
|||
|
||||
magelan |
|
|||
![]() потерял xPath ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 5.4.2010 Репутация: 3 Всего: 16 |
MagicDew,
1я проблема - опасити изначально не определен, я с этим поборолся тупо, лень смотреть как по умному. 2я проблема - лоическая downgradeOpacityForPar вычисляется только один раз, в связи с чем только последний параграф будет высветляться.
Это сообщение отредактировал(а) magelan - 2.11.2011, 17:33 |
|||
|
||||
Absinthe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: нет Всего: 11 |
Без jQuery таким не занимался, т.к. не вижу смысла. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Absinthe, в пользу слов mcTepа высказываются Мозилла и Опера, да и это вроде как давно общепринятое мнение в сообществе. Я, как обычно, проспал какую-то революцию? Буду дико благодарен за ссылки! -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |