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. koka - 30 Декабря, 2010 - 11:24:07 - перейти к сообщению
Здравствуйте!!! Есть такая функция
CODE (javascript):
скопировать код в буфер обмена
  1. function change()
  2.  
  3. {
  4.  
  5. var re="rgb("+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+")";
  6.  
  7.  
  8. document.getElementById("b").style.background=re;
  9. }


меняет цвета элементов с id b

проблема в том, что не получается вызвать нужное количество раз эту функцию

если так, то функция выполняется бесконечно
CODE (javascript):
скопировать код в буфер обмена
  1. SetInterval (change,1000);
  2.  



пытался сделать что-то такое
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function change()
  3.  
  4. {
  5.  
  6. var re="rgb("+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+")";
  7.  
  8.  
  9. document.getElementById("b").style.background=re;
  10. }
  11.  
  12. var iter=0;
  13. var iter2=30;
  14.  
  15. var do=setinterval (change,1000);
  16. for (iter=0;iter<=iter2;iter++)
  17. {
  18.  
  19. if (iter==iter2) clearInterval (do);
  20. }
  21.  
  22.  



Однако, в этом случае цвет ячейки не поменялся не разу.
Как мне задать нужное количество изменений цвета???
А можно ли каждую итерацию постоянно увеличивать задержку.
Например, первый раз смена цвета происходит с задержкой 1 секунду, потом с задержкой 1,1 секунду и т.д.
2. grefon - 30 Декабря, 2010 - 12:00:10 - перейти к сообщению
Код написан неверно. Нужно так:
CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.  
  3. i = 0;
  4. function change() {
  5.         var re="rgb("+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+")";
  6.         document.getElementById("b").style.backgroundColor = re;
  7.         if (i < 3) {
  8.                 i++;
  9.                 setTimeout("change()",1000);
  10.         }
  11.        
  12. }
  13. change();
  14.  
  15.  
  16. </script>
  17.  
3. koka - 30 Декабря, 2010 - 14:32:35 - перейти к сообщению
grefon, спасибо, но не работает Недовольство, огорчение
4. grefon - 30 Декабря, 2010 - 14:37:10 - перейти к сообщению
А у меня работает Радость
У Вас хоть цвет меняет?
5. koka - 30 Декабря, 2010 - 14:47:44 - перейти к сообщению
grefon пишет:
А у меня работает Радость
У Вас хоть цвет меняет?


нет, не работает.
Цвет не меняет.
Где я мог накосячить?:??
6. grefon - 30 Декабря, 2010 - 14:54:14 - перейти к сообщению
Поставьте скрипт после объекта.
Кстати, if (i < 3) - 3 замените на нужное Вам число.
7. koka - 30 Декабря, 2010 - 14:58:16 - перейти к сообщению
grefon пишет:
Поставьте скрипт после объекта.
Кстати, if (i < 3) - 3 замените на нужное Вам число.



I я всё же догадался поменять.

а вот скрипт действительно нужно было поставить после объекта.

Всё рабботает теперь, спасибо за помощь.
8. grefon - 30 Декабря, 2010 - 15:03:04 - перейти к сообщению
Пожалуйста Улыбка
9. JustUserR - 30 Декабря, 2010 - 21:12:20 - перейти к сообщению
koka В качестве возможног варината реализация предполагаемой вами задачи допустимо использвать осуществлеие вызова управляющей функции в потоке окончания загрузки объекта DOM-модели - в таком случае определения порядка загрузки и включения элементов не является существеным что обеспечивает возможность контроля элементов без синхронизации потока загрузки
10. Ch_chov - 31 Декабря, 2010 - 05:50:21 - перейти к сообщению
Цитата:
если так, то функция выполняется бесконечно

Можно остановить с помощью clearInterval


Кстати, вот здесь похожая тема обсуждалась.
11. JustUserR - 02 Января, 2011 - 12:56:45 - перейти к сообщению
Ch_chov пишет:
Можно остановить с помощью clearInterval
Последний предоставленный в данном потоке обсужденя варинат решения задачи включает использование функции setTimeout - и для осуществления отмены запнированного отложенного вызова функци необходимо прменять конструкцию clearTimeout

 

Powered by ExBB FM 1.0 RC1