Выбор случайного количества элементов из множества
Добрый день. Вот возник интерес, как реализовать выбор случайного количества элементов из множества, как-то пока не встречался с такой выборкой, может вы подскажите ? :)
Простой пример
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<style type="text/css">
#field {
position: relative;
width: 500px;
height: 300px;
margin: 2%;
border: 1px solid black;
}
.square {
float: left;
width: 50px;
height: 50px;
border: 1px solid black;
background-color: red;
}
.yellow {
background-color: yellow;
}
</style>
<body>
<div id="field">
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
</div>
<script type="text/javascript">
window.onload = function() {
function findRandomArr() {
var allDiv = $('#field > div');
console.log("allDiv =" + allDiv.length);
var num = Math.floor(Math.random()* (allDiv.length) );
allDiv.eq(num).addClass('yellow');
}
setInterval(findRandomArr, 1000);
}
</script>
</body>
</html>
Как реализовать что б каждую секунду выбиралась какая-то группа дивов, значение каждый раз разное ( от 1 до divAll.lenght) и перекрашивались в другой цвет. На следующую секунду, те что стали другого цвета возвращались в исходное положение, а появлялась новая группа элементов. |
Black_Star,
![]()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<style type="text/css">
#field {
position: relative;
width: 500px;
height: 300px;
margin: 2%;
border: 1px solid black;
}
.square {
float: left;
width: 50px;
height: 50px;
border: 1px solid black;
background-color: red;
transition: all .8s;
}
.yellow {
background-color: yellow;
}
</style>
<body>
<div id="field">
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
</div>
<script type="text/javascript">
window.onload = function() {
var allDiv = $('#field > div');
function findRandomArr() {
allDiv.each(function() {
$(this).is('.yellow') ? $(this).removeClass('yellow') : Math.random() > .3 && $(this).addClass('yellow')
})
}
setInterval(findRandomArr, 1000);
}
</script>
</body>
</html>
|
Спасибо, только оно у вас немного странно работает. Долго я на это смотрел :)
Оно на втором этапе цикла преобразовывает желтый квадраты в красные, а уже потом сбрасывает, и отображает новое. Хотелось бы каждый новый цикл, новые желтые дивы |
Цитата:
|
Цитата:
|
Цитата:
А можно ещё уточнить что за условие Math.random() > .3 -как его понимать надо ? |
Цитата:
|
| Часовой пояс GMT +3, время: 11:04. |