Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.10.2020, 11:06
Новичок на форуме
Отправить личное сообщение для Cvetlaya19 Посмотреть профиль Найти все сообщения от Cvetlaya19
 
Регистрация: 11.10.2020
Сообщений: 6

Массив и random
Ребята такая проблема, есть массив:

let imgs = ['image1.png', 'image2.png', 'image3.png']

Перебираю его с помощью random:

function randomImgs () {
$image.src = imgs [Math.floor(Math.random()*imgs.length)]
}

Далее мне надо выполнить условие if/else, чтобы для каждой картинки выводился свой текст:

function () {
randomImgs ()

if ($image.src === 'image1.png') {
$h1.textContent = 'Хорошо'
} else if ($image.src === 'image2.png') {
$h1.textContent = 'Очень хорошо'
} else if ($image.src === 'image3.png') {
$h1.textContent = 'Совсем хорошо'
}

Мой вариант не работает, не могу правильно задать условие для if и else if, голову сломала, пробовала даже так:

if ($image.src === imgs['image1.png'])...
if ($image.src == imgs[0])...

Заранее спасибо!

Последний раз редактировалось Cvetlaya19, 11.10.2020 в 11:51.
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2020, 11:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А зачем условия, ведь изображения можно хранить сразу с текстом к ним, в массиве объектов, а не массиве. Случайно, это по диапазону индексов этого массива. Далее просто извлекли готовое.
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2020, 12:08
Новичок на форуме
Отправить личное сообщение для Cvetlaya19 Посмотреть профиль Найти все сообщения от Cvetlaya19
 
Регистрация: 11.10.2020
Сообщений: 6

Точно. А сработает, если текст идет отдельным блоком?
Ответить с цитированием
  #4 (permalink)  
Старый 11.10.2020, 12:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Cvetlaya19
А сработает, если текст идет отдельным блоком?
var i = 1 //случайно полученный индекс;
const im1 = [
    {image: '1.jpg', text: 'Text 1'},
    {image: '2.jpg', text: 'Text 2'},
    {image: '3.jpg', text: 'Text 3'}
],
im2 = [
    ['1.jpg', 'Text 1'],
    ['2.jpg', 'Text 2'],
    ['3.jpg', 'Text 3']
],
im3 = ['1.jpg', '2.jpg', '3.jpg'],
txt = ['Text 1', 'Text 2', 'Text 3'];

console.log(
    im1[i].image + ' - ' + im1[i].text + '\n' +
    im2[i][0] + ' - ' + im2[i][1] + '\n' +
    im3[i] + ' - ' + txt[i]
)


Выбирайте любой способ, и любой из них, это лучше чем править вывод, вместо того, чтобы изменять входные данные.
Ответить с цитированием
  #5 (permalink)  
Старый 11.10.2020, 12:37
Новичок на форуме
Отправить личное сообщение для Cvetlaya19 Посмотреть профиль Найти все сообщения от Cvetlaya19
 
Регистрация: 11.10.2020
Сообщений: 6

Спасибо, вроде все поняла, единственное теперь не понятно как добиться у переменной var i рандомного значения.
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2020, 12:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Как обычно, как и делалось, в чем проблема то?

function getRandom(max) {
  return Math.floor(Math.random() * Math.floor(max));
}

var i = getRandom(im1.length);
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2020, 21:05
Новичок на форуме
Отправить личное сообщение для Cvetlaya19 Посмотреть профиль Найти все сообщения от Cvetlaya19
 
Регистрация: 11.10.2020
Сообщений: 6

Дошло) все получилось, спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
script fingerprint ALL небольшая модификация Chris_Phils Ваши сайты и скрипты 6 21.02.2017 09:50
Добавление объекта в массив в цикле Dark19 Элементы интерфейса 3 11.12.2016 23:11
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30