Я пытаюсь вернуть массив, выбирая значение класса, но я получаю только последнее значение.
Итак, это:
<input class="test" value="Example 1" />
<input class="test" value="Example 2" />
console.log($(".test").val());
Возвращает мне это
Example 1
Как я могу получить все значения класса? Я хочу сохранить его в переменной, чтобы я мог отправить его с помощью AJAX.
Вы можете сделать это с помощью метода .map()
например:
var data = $(".test").map(function () {
return this.value;
}).get(); // ["Example 1", "Example 2"]
var values = [];
$(".test").each(function(){
values.push($(this).val());
});
console.log(values);
это потому, что существует множество элементов, которые удовлетворяют селектору ".test", поэтому $ (". test") возвращает массив со всеми экземплярами, которые имеют класс "test", поэтому вам, вероятно, следует перебирать массив, который он возвращает, например это;
$(".test").each(function(){
console.log($(this).val());
});
Попробуйте этот код:
var myArray = $('.test').map(function(){
return $(this).val();
}).get();
Вы получите переменную myArray как массив входных значений, проверьте это здесь:
Попробуй это
var x = $(".test");
это вернет массив элементов, а затем вы можете обработать массив, чтобы получить все значения.
var x = $(".test");
for (var i = 0; i < x.length; i++) {
alert(x[i].value);
}
Имейте в виду, что $('.test')
уже возвращает массив со всеми элементами в DOM, которые имеют test
класса.
Поэтому, если вам нужны все их значения, просто перейдите по возвращенному массиву, сохранив значения в новом массиве.
Функция $(".test")
уже возвращает массив; массив элементов, которые имеют "тест" класса. Таким образом, одним из вариантов было бы сопоставление этого массива с массивом значений. Например
var valueArray = $.map($(".test"), function(input, indx) {
return input.value;
});
for (var i = 0, v; v = valueArray[i]; ++i) {
console.log(v);
}
Вы также можете выполнять итерацию с each()
и создавать свой собственный массив