Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Массивы в js

Саша Триколич Знаток (364), на голосовании 3 месяца назад
подскажите пожалуйста как сделать так чтоб элементы из массива ( строка с картинкой и текстом) выводились по очереди ?
у меня сейчас выводятся в случайном порядке

 let phrases = [
{ text: 'отправить другу смешную гифку', image: 'https://code.s3.yandex.net/web-code/procrastinate/1.gif' },
{ text: 'посмотреть скидки на авиабилеты', image: 'https://code.s3.yandex.net/web-code/procrastinate/2.png' },
{ text: 'разобраться, о чём поют рэперы', image: 'https://code.s3.yandex.net/web-code/procrastinate/3.png' },
{ text: 'Arzamas', image: 'https://code.s3.yandex.net/web-code/procrastinate/4.png' },
{ text: 'расставить книги на полке по цвету', image: 'https://code.s3.yandex.net/web-code/procrastinate/5.png' },
{ text: 'читать про зарплаты в Сан-Франциско', image: 'https://code.s3.yandex.net/web-code/procrastinate/6.png' },
{ text: 'прочитать новости и ужаснуться в комментариях', image: 'https://code.s3.yandex.net/web-code/procrastinate/7.png' },
{ text: 'попасть в поток грустных песен и вспомнить все ошибки молодости', image: 'https://code.s3.yandex.net/web-code/procrastinate/8.png' },
{ text: 'посмотреть трейлер сериала и заодно первый сезон', image: 'https://code.s3.yandex.net/web-code/procrastinate/9.png' },
{ text: 'проверить непрочитанное в Telegram-каналах', image: 'https://code.s3.yandex.net/web-code/procrastinate/10.png' }
];

function getRandomElement(arr) {
let randIndex = Math.floor(Math.random() * arr.length);
return arr[randIndex];
}

let button = document.querySelector('.button');
let phrase = document.querySelector('.phrase');
let advice = document.querySelector('.advice');
let image = document.querySelector('.image');

button.addEventListener('click', function () {
let randomElement = getRandomElement(phrases);
smoothly(phrase, 'textContent', randomElement.text);
smoothly(image, 'src', randomElement.image);

if (randomElement.text.length > 40) {
advice.style.fontSize = '33px';
} else {
advice.style.fontSize = '42px';
}
});
Голосование за лучший ответ
Милана Просветленный (33039) 5 месяцев назад
тобы элементы из массива выводились по очереди, а не в случайном порядке, вам нужно изменить функцию `getRandomElement` так, чтобы она возвращала элементы массива по порядку, а не случайным образом. Для этого можно использовать переменную, которая будет отслеживать текущий индекс элемента в массиве. После каждого вызова функции этот индекс увеличивается, и функция возвращает следующий элемент массива.

вот так


 let phrases = [ 
{ text: 'отправить другу смешную гифку', image: 'https://code.s3.yandex.net/web-code/procrastinate/1.gif' },
{ text: 'посмотреть скидки на авиабилеты', image: 'https://code.s3.yandex.net/web-code/procrastinate/2.png' },
{ text: 'разобраться, о чём поют рэперы', image: 'https://code.s3.yandex.net/web-code/procrastinate/3.png' },
{ text: 'Arzamas', image: 'https://code.s3.yandex.net/web-code/procrastinate/4.png' },
{ text: 'расставить книги на полке по цвету', image: 'https://code.s3.yandex.net/web-code/procrastinate/5.png' },
{ text: 'читать про зарплаты в Сан-Франциско', image: 'https://code.s3.yandex.net/web-code/procrastinate/6.png' },
{ text: 'прочитать новости и ужаснуться в комментариях', image: 'https://code.s3.yandex.net/web-code/procrastinate/7.png' },
{ text: 'попасть в поток грустных песен и вспомнить все ошибки молодости', image: 'https://code.s3.yandex.net/web-code/procrastinate/8.png' },
{ text: 'посмотреть трейлер сериала и заодно первый сезон', image: 'https://code.s3.yandex.net/web-code/procrastinate/9.png' },
{ text: 'проверить непрочитанное в Telegram-каналах', image: 'https://code.s3.yandex.net/web-code/procrastinate/10.png' }
];

let currentIndex = 0; // Начальный индекс

function getNextElement(arr) {
if (currentIndex >= arr.length) {
currentIndex = 0; // Возвращаемся к началу массива, если достигнут конец
}
let nextElement = arr[currentIndex];
currentIndex++; // Увеличиваем индекс на 1
return nextElement;
}

let button = document.querySelector('.button');
let phrase = document.querySelector('.phrase');
let advice = document.querySelector('.advice');
let image = document.querySelector('.image');

button.addEventListener('click', function () {
let nextElement = getNextElement(phrases);
smoothly(phrase, 'textContent', nextElement.text);
smoothly(image, 'src', nextElement.image);

if (nextElement.text.length > 40) {
advice.style.fontSize = '33px';
} else {
advice.style.fontSize = '42px';
}
});
Саша ТриколичЗнаток (364) 5 месяцев назад
спасибо вам большое
Данил Ласый Просветленный (32761) 5 месяцев назад
for(let i=o;i<n;i++){
alert("text");
} -принцип такой(n - число фраз)
Похожие вопросы