Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 03.03.2020, 22:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,079

voraa,
как то так ...
//...
const limit = 3;
  for (let i = 0; i < limit; i++) {
//...
elem.classList.add('active');
}

Последний раз редактировалось рони, 03.03.2020 в 22:38.
Ответить с цитированием
  #22 (permalink)  
Старый 03.03.2020, 22:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,079

wwwebtarget,
терпение, подождём вариант от voraa,
Ответить с цитированием
  #23 (permalink)  
Старый 03.03.2020, 22:53
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 207

Я уже дал свой вариант

Сообщение от voraa Посмотреть сообщение
Ну 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') );
Ответить с цитированием
  #24 (permalink)  
Старый 03.03.2020, 22:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,079

случайный выбор блоков
вариант из двух циклов, без повторов и проверок на уникальность, случайность более "равномерная".

<!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>
Ответить с цитированием
  #25 (permalink)  
Старый 03.03.2020, 22:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,079

случайный выбор блоков
один цикл
<!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>
Ответить с цитированием
  #26 (permalink)  
Старый 04.03.2020, 06:50
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 207

Сообщение от рони Посмотреть сообщение
вариант из двух циклов,
const arr = [...document.querySelectorAll('div.status>span.onli ne')]

Если это не цикл, то что?
Ответить с цитированием
  #27 (permalink)  
Старый 04.03.2020, 07:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,079

Сообщение от voraa
Если это не цикл, то что?
не знаю, можно ли назвать дублирование циклом, это к специалистам. в любом случае с while идут лишние итерации и чем ближе limit к length, тем они более возрастают.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Gtranslate.io перевод при загрузке страницы Ops Общие вопросы Javascript 2 30.11.2016 16:36
Прокрутка окна при загрузке страницы dexteron Общие вопросы Javascript 5 09.04.2015 19:08
Автосролл при загрузке страницы gam0ra Общие вопросы Javascript 11 27.02.2015 12:49
Отправка формы при загрузке страницы Shimmy AJAX и COMET 7 26.11.2013 12:51
Автозапуск скрипта при загрузке страницы HepoH Javascript под браузер 3 31.03.2012 21:27