Использовать выбранные значения параметров для цикла

75
4

Добрый день.

Я пытаюсь использовать выбранное значение в окне параметров в цикле for.

Теория состоит в том, что если пользователь выбирает 3, например, Javascript будет заполнять 3 ящика фруктами из массива.

Может кто-то указать мне верное направление? Я также добавил ссылку Codepen.

function changeText(){
var e = document.getElementById('selectbox');
var strUser = e.options[e.selectedIndex].value;
for (var i=0; i<=strUser; i++) {
document.getElementById('boldStuff').innerHTML = randomFruit + strUser;
}

}

http://codepen.io/jameswinfield/pen/aNWRKm

спросил(а) 2021-01-28T01:23:29+03:00 3 месяца, 1 неделя назад
1
Решение
62

Элемент ID должен быть уникальным для всего dom. Вы используете его несколько раз для boldStuff. Если вы хотите, чтобы их хватало, вы должны использовать класс.

Вот версия, которая должна делать то, что вы хотите: http://codepen.io/anon/pen/KzmGLP?editors=0010

Имейте в виду, что значение устанавливается для каждого окна, даже для скрытых. Вам нужно будет получить новые случайные фрукты в коробке, или все они будут иметь одинаковые плоды.

Я изменил все id="boldStuff" на class="boldStuff",

grabbed all boldStuffs var boldStuffs = document.getElementsByClassName('boldStuff');

и зациклился над каждым жирным шрифтом

for (var i = 0; i < boldStuffs.length; i += 1) {  
//And set the value of each boldStuff to a new random fruit.
boldStuffs[i].innerHTML = getRandomItem(fruitsArray);
}

Следующая строка также работает только один раз, поэтому, независимо от того, сколько ящиков там, все они будут иметь одинаковые плоды (поскольку randomFruit никогда не изменяется)

var randomFruit = fruitsArray[Math.floor(Math.random() * fruitsArray.length)];

Вы можете использовать функцию для захвата случайных фруктов, а вот что-то вроде этого:

function getRandomItem(arr) {
return arr[Math.floor(Math.random() * arr.length)];
}

Затем используйте getRandomItem(fruitsArray); чтобы получить случайный плод.

ответил(а) 2021-01-28T01:23:29+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема