Перебирайте идентификаторы, сохраняйте значения, помещайте в массив
Я хочу иметь возможность перебирать несколько идентификаторов, называемых "#option1", "#option2" и т. Д. Проблема заключается в интерактивной форме, и я не знаю, сколько будет вариантов. Поэтому мне нужен способ перебора суммы в DOM, когда пользователь нажимает ("#dothis").
Затем мне нужно получить значения этих опций, поместить в массив с именем arraylist.
$("#doThis").on("click", function() {
var optionone = $("#option1").val();
var optiontwo = $("#option2").val();
var optionthree = $("#option3").val();
var optionfour = $("#option4").val();
var optionfive = $("#option5").val();
var arrayList = [optionone, optiontwo, optionthree,
optionfour, optionfive];
var decide = arrayList[Math.floor(Math.random() *
arrayList.length)];
$("#verdict").text(decide);
}); // end of dothis click event
2 ответа
Решение
Как сказал Энди, дайте каждому варианту одинаковый класс. В моем примере это "option-item".
$("#doThis").on("click", function() {
var arrayList = [];
$('.option-item').each(function(i) {
arrayList[i] = $(this).val();
});
var decide = arrayList[Math.floor(Math.random() *
arrayList.length)];
$("#verdict").text(decide);
});
Каждое значение теперь хранится в массиве.
увидеть скрипку
Привет Тимми
С вашим кодом, как есть, вы можете использовать селектор, который выбирает все с идентификатором, который начинается с "option", например [id^="option"]
вот как это использовать:
$("#doThis").on("click", function () {
var arrayList = [];
$('[id^="option"]').each(function (index, element) {
arrayList.push($(element).val() );
});
var decide = arrayList[Math.floor(Math.random() *
arrayList.length)];
$("#verdict").text(decide);
}); // end of dothis click event