Функция выдает что-то попало, помогите пожалуйста
Вот есть такая структура
<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); } } По задумке есть карточка она прыгает по экрану и всё время меняет цвет, цвет не должен повторяться. Сделал такую функцию но почему-то цвет бывает повторяется. Никак не пойму как-такое может быть помогите пожалуйста... |
может потому что числа которые генерирует Math.random могу повторятся
|
что бы не было повторении , можете перебирать массив по порядку (как в цикле) или записывать те номера элементов которые были (в массив) и проверять каждый раз
|
всё разобрался. Не назначил интервал вызова функции и перегружаю страницу, а на ней то карточка то разная и скрипт другой. Дико затупил. Всё тему можно закрыть)
|
Пока не закрыли тему чтобы не сорить хочу спросить можно ли сделать как то так что бы после setTimeout код выполнялся после конца setTimeout? например: такой код setTimeout(func, 10000); alert('text');
выведется алерт, а потом отработает функция через 10сек, а можно ли как то сделать что бы после отработки setTimout работал alert? |
Цитата:
если после окночания работы setTimeout , нужна задержка добаляйте еще setTimeout |
а то другой вопрос, как можно узнать точное время окончания если там делается некоторое кол-во проходов? То есть сеттаймут использую как альтернативу сетинтервал, умножения времени интервала на кол-во проходов дает не совсем точный результат, попробовал сеттайаут с таким временем ожидания вылез чуть раньше...
|
Цитата:
<!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> |
А что на счет когда беру table.innerHTML и в внутрь ложу цикл то каждый TR оказывается в tbody, ну по крайней мере так отображает firebug, как с этим бороться?
|
если есть готовый код , выложите его а то не совсем понял что нужно
|
Часовой пояс GMT +3, время: 10:30. |