@myskypesla

Как правильно использовать Math.random()?

Привет.

Есть 10 элементов на странице.
Нужно чтобы каждые 5 секунд рандомному элементу присваивался класс.
Всё сделал, только не могу совместить с setInterval 2 своих функции.

function getRandom() {
  return Math.random();
}

function random() {
  if (getRandom() < 0.25) {
    $('.element-1').addClass('active');
  } else if (getRandom() > 0.25 && getRandom() < 0.5) {
    $('.element-2').addClass('active');
  } else if (getRandom() > 0.5 && getRandom() < 0.75) {
    $('.element-3').addClass('active');
  } else () {
    $('.element-4').addClass('active');
  }
}


Подскажите как правильно сделать?
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
@lnked
setInterval(function() {
    $('.element-1, .element-2, .element-3, .element-4').removeClass('active');
    $('.element-' + (Math.floor(Math.random() * (4 - 1 + 1)) + 1)).addClass('active');
}, 5000);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
У Вас getRandom() вызывается несколько раз, и все время значение разное.
Так что getRandom() < 0.5 || getRandom() >= 0.5. Первый вызов даст, например, 0.6, а второй, например, 0.4.
Чтобы исправить, нужно значение сохранить в переменную:

UPD Промахнулся
function getRandom() {
  return Math.random();
}

function random() {
  var rand = getRandom();
  if (rand < 0.25) {
    $('.element-1').addClass('active');
  } else if (rand > 0.25 && rand < 0.5) {
    $('.element-2').addClass('active');
  } else if (rand > 0.5 && rand < 0.75) {
    $('.element-3').addClass('active');
  } else () {
    $('.element-4').addClass('active');
  }
}

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы