Функция выдает что-то попало, помогите пожалуйста
Вот есть такая структура
<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, как с этим бороться?
|
если есть готовый код , выложите его а то не совсем понял что нужно
|
cyber, вот такой код:
table.innerHTML = '<thead> \
<tr> \
<th>№</th> \
<th>Жёлтый</th> \
<th>Оранжевый</th> \
<th>Розовый</th> \
<th>Красный</th> \
<th>Зелёный</th> \
<th>Чёрный</th> \
<th>Голубой</th> \
<th>Синий</th> \
</tr> \
</thead>';
table.innerHTML += '<tfoot><tr><td colspan="9"><button id="readyButton">Готово!</button></td></tr></tfoot>';
for (var i = 0; i < result.listOfColors.length; i++) {
table.innerHTML += '<tr> \
<td>' + (i + 1) + '</td> \
<td><input type="radio" name="' + 'radio' + i + '"value="yellow" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="orange" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="hotPink" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="red" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="green" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="black" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="deepSkyBlue" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="mediumBlue" /></td> \
</tr>';
}
Смотря на структуру HTML через firebug он показывает каждый tr обвернутым в tbody, хотя как видите здесь никакого tbody нет. |
<!DOCTYPE HTML>
<html>
<head> </head>
<body>
<script>
var table = document.createElement('table');
var TableContent = '<thead> \
<tr> \
<th>№</th> \
<th>Жёлтый</th> \
<th>Оранжевый</th> \
<th>Розовый</th> \
<th>Красный</th> \
<th>Зелёный</th> \
<th>Чёрный</th> \
<th>Голубой</th> \
<th>Синий</th> \
</tr> \
</thead>';
TableContent += '<tfoot><tr><td colspan="9"><button id="readyButton">Готово!</button></td></tr></tfoot>';
for (var i = 0; i <20; i++) {
TableContent += '<tr> \
<td>' + (i + 1) + '</td> \
<td><input type="radio" name="' + 'radio' + i + '"value="yellow" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="orange" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="hotPink" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="red" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="green" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="black" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="deepSkyBlue" /></td> \
<td><input type="radio" name="' + 'radio' + i + '"value="mediumBlue" /></td> \
</tr>';
}
table.innerHTML = TableContent
document.body.appendChild(table)
</script>
</body>
</html>
|
Цитата:
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 04:38. |