Рандомное добавление класса при загрузке страницы
Есть блок с 10 новостями на странице. Как можно при загрузке страницы, рандомно добавить класс .active к диву чтобы получилось вот так <div class="status"><span class="online active"></span></div>
Чтобы класс .active добавлялся к примеру к первой новости, к четвертой, восьмой Код:
<a href="#" class="product-item-link"> |
const nmarknews = (Math.round()*10 | 0) + 1; // к-во отмеченных новостей (от 1 до 10) или задать нужное значение
const marknews = [];
while (marknews.length < nmarknews) {
const n = Math.round()*10 | 0;
if (! marknews.includes(n) ) marknews.push(n);
}
const spans = document.querySelectorAll('div.status>span.online');
marknews.forEach(n => spans[n].classList.add('active') );
|
voraa,
а без Цитата:
|
Проверил данный вариант, класс .active добавляется только к первой новости
Подскажите можно ли как то добиться чтобы клас добавлялся несколько раз к разным новостям? |
Цитата:
|
Цитата:
Может marknew.indexOf(n)<0 прокатит. А че? Всякие бабели с includes не справятся? |
Цитата:
|
Цитата:
Цитата:
|
wwwebtarget,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.active {
background-color: #FF0000;
color: #FFFFFF;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$("div.status>span.online").filter(()=> Math.random() < .3).addClass("active");
});
</script>
</head>
<body>
<div class="status"><span class="online">01</span></div>
<div class="status"><span class="online">02</span></div>
<div class="status"><span class="online">03</span></div>
<div class="status"><span class="online">04</span></div>
<div class="status"><span class="online">05</span></div>
<div class="status"><span class="online">06</span></div>
<div class="status"><span class="online">07</span></div>
<div class="status"><span class="online">08</span></div>
<div class="status"><span class="online">09</span></div>
<div class="status"><span class="online">10</span></div>
</body>
</html>
|
А куда Вы этот код вставляете?
Его надо после загрузки всей страницы исполнять, или в конце <body> или в обработчике окончания загрузки. |
voraa,
только один цикл for на всё без проверок на уникальность и без повторов. |
Цитата:
|
Есть вероятность, что ни одна новость не будет отмечена.
|
Цитата:
|
Ну random, конечно, а не round
const nmarknews = (Math.random()*10 | 0) + 1; // к-во отмеченных новостей (от 1 до 10) или задать нужное значение
const marknews = [];
while (marknews.length < nmarknews) {
const n = Math.random()*10 | 0;
if (! marknews.includes(n) ) marknews.push(n);
}
const spans = document.querySelectorAll('div.status>span.online');
marknews.forEach(n => spans[n].classList.add('active') );
|
Цитата:
|
voraa и рони, спасибо большое за помощь. Все получилось :) Огромное благодарен
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
voraa,
как то так ...
//...
const limit = 3;
for (let i = 0; i < limit; i++) {
//...
elem.classList.add('active');
}
|
wwwebtarget,
терпение, подождём вариант от voraa, |
Я уже дал свой вариант
Цитата:
|
случайный выбор блоков
вариант из двух циклов, без повторов и проверок на уникальность, случайность более "равномерная".
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.active {
background-color: #FF0000;
color: #FFFFFF;
}
</style>
<script>
document.addEventListener( 'DOMContentLoaded' , () => {
const arr = [...document.querySelectorAll('div.status>span.online')]
const limit = 3;
const {length} = arr;
for (let i = 0; i < length; i++) {
const index = Math.floor(Math.random() * length);
[arr[i], arr[index]] = [arr[index], arr[i]];
};
arr.length = limit;
arr.forEach(({classList}) => classList.add('active'));
});
</script>
</head>
<body>
<div class="status"><span class="online">01</span></div>
<div class="status"><span class="online">02</span></div>
<div class="status"><span class="online">03</span></div>
<div class="status"><span class="online">04</span></div>
<div class="status"><span class="online">05</span></div>
<div class="status"><span class="online">06</span></div>
<div class="status"><span class="online">07</span></div>
<div class="status"><span class="online">08</span></div>
<div class="status"><span class="online">09</span></div>
<div class="status"><span class="online">10</span></div>
</body>
</html>
|
случайный выбор блоков
один цикл
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.active {
background-color: #FF0000;
color: #FFFFFF;
}
</style>
<script>
document.addEventListener( 'DOMContentLoaded' , () => {
const arr = [...document.querySelectorAll('div.status>span.online')]
const limit = 3;
for (let i = 0; i < limit; i++) {
const {length} = arr;
const index = Math.floor(Math.random() * length);
const {classList} = arr.splice(index, 1)[0];
classList.add('active');
}
});
</script>
</head>
<body>
<div class="status"><span class="online">01</span></div>
<div class="status"><span class="online">02</span></div>
<div class="status"><span class="online">03</span></div>
<div class="status"><span class="online">04</span></div>
<div class="status"><span class="online">05</span></div>
<div class="status"><span class="online">06</span></div>
<div class="status"><span class="online">07</span></div>
<div class="status"><span class="online">08</span></div>
<div class="status"><span class="online">09</span></div>
<div class="status"><span class="online">10</span></div>
</body>
</html>
|
Цитата:
Если это не цикл, то что? |
Цитата:
|
| Часовой пояс GMT +3, время: 16:05. |