Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: мигание
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » мигание

Страниц (1): [1]
 

1. LIME - 29 Ноября, 2011 - 13:39:03 - перейти к сообщению
привет
не знаю как сделать нативно мигание текста в JS
по онклику получаю vybor=document.getElementById("info");
вставляю туда innerHTML
надо чтоб оно мигнуло два раза(типа обратило на себя внимание)
напишите как менять прозрачность по интервалу пжлст
спасибо ))
(Добавление)
нашел
CODE (javascript):
скопировать код в буфер обмена
  1. for ( i = 0; i < 20; i++)
  2. {
  3.         setTimeout("document.getElementById('info').style.fontWeight='Bold'",500)
  4.         setTimeout("document.getElementById('info').style.fontWeight='Normal'",1000);
  5. }
почемуто 1 раз утолщает потом возвращает и все
и при повторном клике вообще нет реакции
(Добавление)
вот весь навсякий
CODE (javascript):
скопировать код в буфер обмена
  1. function go(el) {
  2.         var vybor=document.getElementById("info"),vybor2=document.getElementById("info2");
  3.         var td=el.childNodes,str='';
  4.         str = td[0].innerHTML+"  Ряд:"+td[1].innerHTML+"  Цена:"+td[2].innerHTML+"р.  Места:"+td[3].innerHTML; 
  5.         vybor.innerHTML=str;
  6.         vybor2.value=str;
  7.         for ( i = 0; i < 20; i++)
  8. {
  9.         setTimeout("document.getElementById('info').style.fontWeight='Bold'",500)
  10.         setTimeout("document.getElementById('info').style.fontWeight='Normal'",1000);
  11. }
  12. }

(Добавление)
передается this
(Добавление)
пробовал без цикла
повторял тупо таймауты
тотже результат
2. Мелкий - 29 Ноября, 2011 - 14:55:05 - перейти к сообщению
Срабатывают таймауты когда положено. Другое дело, что все 20 - сразу. Почему - на самостоятельное изучение.
3. LIME - 29 Ноября, 2011 - 15:07:44 - перейти к сообщению
Мелкий спасибо ))
вспомнил))
писать фцию переключения и в setInterval ?
4. Мелкий - 29 Ноября, 2011 - 15:12:56 - перейти к сообщению
или так, или ставить таймаут в зависимость от счётчика i
5. LIME - 29 Ноября, 2011 - 15:13:20 - перейти к сообщению
вообщето надо чтоб 2 раза мигнуло
как осуществить подскажите плз
(Добавление)
Мелкий пишет:
ставить таймаут в зависимость от счётчика i
примерчик можно? не догнал
6. EuGen - 29 Ноября, 2011 - 15:19:47 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.  
  3. function switchState(rObj, bState)
  4. {
  5.    rObj.style.visibility=(bState?"visible":"hidden");
  6. }
  7. function blinkItem(rObj, fnCallback, iTimes, iTimeout)
  8. {
  9.    if(!iTimes)
  10.    {
  11.       return true;
  12.    }
  13.    window[fnCallback](rObj, iTimes % 2);
  14.    setTimeout(function(){blinkItem(rObj, fnCallback, iTimes-1, iTimeout)}, iTimeout);
  15. }
  16.  
  17. </script>
  18.  
  19. <div id="blinkTester">Some text is here</div><br/>
  20. Enter blinking times: <input type="text" id="blinkTimes">
  21. <input type="button" onClick="blinkItem(document.getElementById('blinkTester'), 'switchState', document.getElementById('blinkTimes').value, 500); return true;" value="Blink it!">
7. LIME - 29 Ноября, 2011 - 15:27:10 - перейти к сообщению
EuGen извините но я не достаточно знаю JS для разбора вашего примера
а надо бы сделать сегодня или завтра до обеда
возможно ли привести поконкретнее пример для скрипта который я привел выше?
надеюсь на вашу помощь
спасибо
(Добавление)
тему перенесли из "напишите за меня"
зря)) мне надо именно конкретный скрипт
мне не лень изучать но загруженность не позволяет на данный момент к сожалению
помогите мне в этой детали пжлст
8. EuGen - 29 Ноября, 2011 - 15:32:45 - перейти к сообщению
LIME
Можете вообще просто использовать мой пример. Вам достаточно лишь исправить для себя callback-функцию switchState
9. LIME - 29 Ноября, 2011 - 15:36:57 - перейти к сообщению
EuGen но ведь кроме всего есть действия по клику другие
надо все в 1ой ф-ции сделать вызываемой по клику
а у вас есть действия прописанные в клике тега
как это отразится на переносе вашего скрипта в мою фцию?
10. EuGen - 29 Ноября, 2011 - 15:41:38 - перейти к сообщению
Ну так выполняйте требуемые действия, добавив к ним вызов "функции-мигалки". То есть Ваш функционал будет работать как обычно (естественно, Ваши seTimeout нужно будет убрать), но плюс к тому вызовется функция, которая выполнит нужную подсветку.
Пример я написал специально унифицированным, чтобы подключать легко было.
Все будет примерно так (не имею возможности проверить):
CODE (javascript):
скопировать код в буфер обмена
  1.     function go(el) {
  2.             var vybor=document.getElementById("info"),vybor2=document.getElementById("info2");
  3.             var td=el.childNodes,str='';
  4.             str = td[0].innerHTML+"  Ряд:"+td[1].innerHTML+"  Цена:"+td[2].innerHTML+"р.  Места:"+td[3].innerHTML;
  5.             vybor.innerHTML=str;
  6.             vybor2.value=str;
  7.             blinkItem(document.getElementById('info'), 'switchState', 20, 500);
  8.     }

- ну и, повторюсь, switchState под Вашу стилизацию мигания изменить нужно.
11. OrmaJever - 29 Ноября, 2011 - 15:47:04 - перейти к сообщению
Я раньше когда был неопытным написал функцию. Вот она
CODE (javascript):
скопировать код в буфер обмена
  1. var opacity = 1;
  2. var xx = true;
  3.  
  4. function animate() {
  5.         var timer = document.getElementById('time'); // елемент текста
  6.         if(xx === true && opacity >= 0) {
  7.                 opacity = (opacity - 0.05).toFixed(2);
  8.                 if(opacity == 0) xx = false;
  9.         } else {
  10.                 opacity = (Number(opacity) + 0.05).toFixed(2);
  11.                 if(opacity == 1) xx = true;
  12.         }
  13.         timer.style.opacity = opacity;
  14.     setTimeout('animate()', 30);
  15. }

ВОзможно написана плохо, возможно работать не будет, но для пример сойдёт Улыбка
12. LIME - 29 Ноября, 2011 - 15:49:27 - перейти к сообщению
OrmaJever спасибо)) ...я пока с вариантом EuGenа разбираюсь
потом возможно ваш рассмотрю
EuGen все получилось спасибо но...
при повторных кликах не работает мигание (и только оно)
в чем дело может быть?
(Добавление)
то есть содержание меняется но не мигает
мигает только первый раз
13. EuGen - 29 Ноября, 2011 - 15:53:36 - перейти к сообщению
Сложно так, не глядя, сказать. Функция контекстно-независима, явной причины не вижу (посколько тестировал ее и на параллельных вызовах, и на многократных последовательных).
Могу предложить только firebug - чтобы посмотреть, что не так. (он сообщит об ошибке) - отладка.. не говорю о ней, потому как Вы сказали
LIME пишет:
но я не достаточно знаю JS

Если у Вас установлен firebug и он показывает какую-либо ошибку - покажите, постараюсь понять, в чем проблема.
И покажите, как Вы переписали функцию switchState
14. LIME - 29 Ноября, 2011 - 15:59:23 - перейти к сообщению
я сегодня пожалуй уже небуду ничего писать
завтра продолжим если вы не против
EuGen пишет:
Если у Вас установлен firebug и он показывает какую-либо ошибку
ошибок нет
до завтра ))
спасибо за помошь
15. EuGen - 29 Ноября, 2011 - 16:10:18 - перейти к сообщению
Есть кстати идея, почему так может быть. Дело в том, что канонически setTimeout ожидает строковую переменную в качестве кода. Вызов лямбда-функции допустим (как в моем примере), но поддерживается не всеми браузерами (и, насколько мне известно, даже не все версии одного и того же браузера могут правильно интерпретировать подобный вызов).
Можно попробовать привести к классическому виду:
CODE (javascript):
скопировать код в буфер обмена
  1. function blinkItem(rObj, fnCallback, iTimes, iTimeout)
  2. {
  3.    if(!iTimes)
  4.    {
  5.       return true;
  6.    }
  7.    window[fnCallback](rObj, iTimes % 2);
  8.    setTimeout("blinkItem("+rObj+", '"+fnCallback+"', "+(iTimes-1)+", "+iTimeout+")", iTimeout);
  9. }

 

Powered by ExBB FM 1.0 RC1