JaxAdam
@JaxAdam
Junior Full-Stack Developer

Math.random() в цикле each(). Как сделать чтобы в каждой итерации число было рандомным?

Столкнулся с проблемой: мне нужно повернуть блоки на этой странице, как указано на рисунке ниже (каждый рисунок повернут под рандомным углом).

5c41dd305fe75866211615.jpeg
Как решение, я применил код jQuery:

$(document).ready(function () {
        $('.program-link').each(function(){
            var degree = Math.random() * (5 + 5) - 5;
            $('.program-link img').css(
                {transform: 'rotate(' + degree + 'deg)'}
            )
        });
    });

В итоге выясняю, что Math.random() у меня на странице работает не совсем корректно. При перезагрузке страницы остается тот же самый угол, и все рисунки повернуты под одним углом.
  • Вопрос задан
  • 243 просмотра
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Вы хоть и выполняете рандом для каждого program-link, но назначаете этот рандом не к текущему элементу, а к всем. Код $('.program-link img') берет все элементы img из program-link. т.е. каждую итерацию, вы создаете случайный поворот, и назначаете его ко всем картинкам. В итоге, после работы скрипта, все картинки имеют один угол поворота - последний сгенерированный.
Вот так лучше:
$(document).ready(function () {
        $('.program-link').each(function(){
            var degree = Math.random() * (5 + 5) - 5;
            $(this).find('img').css( // берем картинку только из текущего .program-link
                {transform: 'rotate(' + degree + 'deg)'}
            )
        });
    });
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
$('.program-link img').css('transform', () => `rotate(${Math.random() * 10 - 5}deg)`);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Так вы в каждой итерации задаёте угол для всех картинок.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект