AntonBrock
@AntonBrock
screen light

Где-то явная ошибка, но где?

Ошибка в JS думаю, просто не показывает один из блоков :с

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}
let randomItem = getRandomArbitrary(0,3)
  if(window.innerWidth < 414) {
document.getElementsByClassName('.music')[randomItem].style.display="block";
}

.music {
        display: none;
    }


<div class="music">
            <img src="audio1.jpg" width="290px" height="280px" />
            <p>Citizen — Yellow Love</p>
            <audio src="6666.mp3" controls>Citizen — Yellow Love</audio>
          </div>
          <div class="music">
            <img src="audio22.jpg" width="300px" height="280px" />
            <p>Low Roar- Don't Be So Serious</p>
            <audio src="7777.mp3" controls></audio>
          </div>
          <div class="music">
            <img src="audio3.jpg" width="290px" height="280px" />
            <p>Mo - Mercy</p>
            <audio src="8888.mp3" controls></audio>
          </div>


UPD

С помощью многих внизу, изменили, но он все также не показывает рандомный блок :

function getRandomArbitrary(min, max) {
  return  Math.floor(min + Math.random() * (max + 1 - min))
}
let randomItem = getRandomArbitrary(0,2)
  if(window.innerWidth < 414) {
document.getElementsByClassName('.music')[randomItem].style.display="block";
}
  • Вопрос задан
  • 135 просмотров
Решения вопроса 4
@imhuman
randomItem должно быть целым, getRandomArbitrary возвращает float

function getRandomArbitrary(min, max) {
  return  Math.floor(min + Math.random() * (max + 1 - min))
}

И вместо (0, 3) в вашем случае надо (0, 2)
Ответ написан
tomnolane
@tomnolane
профессиональный разработчик
у вас с вычислениями непорядок 5c0cd43d603c2199624867.png

введите в консоле разрабочтика
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}
let randomItem = getRandomArbitrary(0,3)
randomItem // вывод: 0.6108746700365573
document.getElementsByClassName('.music')[randomItem] // undefined


UPD

как написал imhuman,
return  Math.floor(min + Math.random() * (max + 1 - min))
примерно решает вашу проблему (где min = 0, max =2)
Ответ написан
@choupa
Архитектор (обычный, который строит)
Сделайте для начала floor, а там поглядим

Math.floor( Math.random() * (max - min) + min)
Ответ написан
@mihailv88
Как вам уже сказали, у вас дробное число, а должно вернуть целое.
function getRandomArbitrary(min, max) {
  return Math.floor(Math.random() * (max - min) + min);
}

Проверил в консоли, возвращает 0, 1 или 2.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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