Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2012, 17:14
Аспирант
Отправить личное сообщение для Jeremen Посмотреть профиль Найти все сообщения от Jeremen
 
Регистрация: 03.02.2012
Сообщений: 45

Функция выдает что-то попало, помогите пожалуйста
Вот есть такая структура
<div id="card"></div>

И такой JS
function gameCore() {
			var card = document.getElementById('card');
			var position = {
				top: getRandom(document.documentElement.clientHeight) - 270,
				left: getRandom(document.documentElement.clientWidth) - 320
			};
			var colorsArr = ['yellow', 'orange', 'hotPink', 'red', 'green', 'black', 'deepSkyBlue', 'mediumBlue'];
			var color = colorsArr[Math.floor(Math.random() * colorsArr.length)];
			
			if (color === card.style.backgroundColor) {
				getColorWithoutReps(card.style.backgroundColor);
			}
			
			card.style.backgroundColor = color;
			
			if (position.top < 0) {
				position.top = 250;
			}
			
			if (position.left < 0) {
				position.left = 650;
			}
			
			card.style.top = position.top + 'px';
			card.style.left = position.left + 'px';
			
			function getColorWithoutReps(colorArg) {
				while (color === colorArg) {
					color = colorsArr[Math.floor(Math.random() * colorsArr.length)];
				} 
			}
			
			function getRandom(includingTo) {
			     return Math.floor(Math.random() * includingTo + 1);
			}
			
		}

По задумке есть карточка она прыгает по экрану и всё время меняет цвет, цвет не должен повторяться. Сделал такую функцию но почему-то цвет бывает повторяется. Никак не пойму как-такое может быть помогите пожалуйста...
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2012, 17:30
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

может потому что числа которые генерирует Math.random могу повторятся
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2012, 17:33
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

что бы не было повторении , можете перебирать массив по порядку (как в цикле) или записывать те номера элементов которые были (в массив) и проверять каждый раз
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2012, 17:33
Аспирант
Отправить личное сообщение для Jeremen Посмотреть профиль Найти все сообщения от Jeremen
 
Регистрация: 03.02.2012
Сообщений: 45

всё разобрался. Не назначил интервал вызова функции и перегружаю страницу, а на ней то карточка то разная и скрипт другой. Дико затупил. Всё тему можно закрыть)
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2012, 18:55
Аспирант
Отправить личное сообщение для Jeremen Посмотреть профиль Найти все сообщения от Jeremen
 
Регистрация: 03.02.2012
Сообщений: 45

Пока не закрыли тему чтобы не сорить хочу спросить можно ли сделать как то так что бы после setTimeout код выполнялся после конца setTimeout? например: такой код setTimeout(func, 10000); alert('text');
выведется алерт, а потом отработает функция через 10сек, а можно ли как то сделать что бы после отработки setTimout работал alert?
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2012, 19:01
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Jeremen Посмотреть сообщение
Пока не закрыли тему чтобы не сорить хочу спросить можно ли сделать как то так что бы после setTimeout код выполнялся после конца setTimeout? например: такой код setTimeout(func, 10000); alert('text');
выведется алерт, а потом отработает функция через 10сек, а можно ли как то сделать что бы после отработки setTimout работал alert?
будет работать только тот код который в вызванной функции
если после окночания работы setTimeout , нужна задержка добаляйте еще setTimeout
Ответить с цитированием
  #7 (permalink)  
Старый 19.08.2012, 19:41
Аспирант
Отправить личное сообщение для Jeremen Посмотреть профиль Найти все сообщения от Jeremen
 
Регистрация: 03.02.2012
Сообщений: 45

а то другой вопрос, как можно узнать точное время окончания если там делается некоторое кол-во проходов? То есть сеттаймут использую как альтернативу сетинтервал, умножения времени интервала на кол-во проходов дает не совсем точный результат, попробовал сеттайаут с таким временем ожидания вылез чуть раньше...
Ответить с цитированием
  #8 (permalink)  
Старый 19.08.2012, 20:10
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Jeremen Посмотреть сообщение
а то другой вопрос, как можно узнать точное время окончания если там делается некоторое кол-во проходов? То есть сеттаймут использую как альтернативу сетинтервал, умножения времени интервала на кол-во проходов дает не совсем точный результат, попробовал сеттайаут с таким временем ожидания вылез чуть раньше...
а зачем вам время выполнения? если вы хотите запустить новый таймер после окончания предыдущего то можно сделать так:
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <div id='timer'></div>
    <script>

   var count = 5;   
   var innerTimer = document.getElementById('timer');
      


      function callAfterEnd_Fnc() {
      
      alert('таймер выполнился можно запускать новый')
      
      }     

     
     function callTimer () {
       
     innerTimer.innerHTML = count;  
     
       if (count == 0) {
       
       callAfterEnd_Fnc();
       return;
       
       }
     count--;  
     setTimeout(callTimer,1000)
     } 
    
      
    callTimer ();
    </script>

  </body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 19.08.2012, 21:28
Аспирант
Отправить личное сообщение для Jeremen Посмотреть профиль Найти все сообщения от Jeremen
 
Регистрация: 03.02.2012
Сообщений: 45

А что на счет когда беру table.innerHTML и в внутрь ложу цикл то каждый TR оказывается в tbody, ну по крайней мере так отображает firebug, как с этим бороться?
Ответить с цитированием
  #10 (permalink)  
Старый 19.08.2012, 21:44
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

если есть готовый код , выложите его а то не совсем понял что нужно
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите пожалуйста, очень срочно!!! PAMAC AJAX и COMET 1 20.10.2009 23:38
есть ли стандартная функция вывода сожержимого массива что то вроди print_r в PHP??? mazovski Events/DOM/Window 4 20.08.2009 12:52
Помогите пожалуйста новичку. deepslam jQuery 15 26.07.2009 02:21
Помогите, пожалуйста! rzhsasha Ваши сайты и скрипты 2 20.07.2009 21:07