Когда вы используете for..of
над коллекцией jQuery, возвращаемые вами элементы - это сами элементы, а не коллекция jQuery, которая содержит этот элемент. Либо превратите элемент в коллекцию jQuery, прежде чем вызывать .val()
для него:
const values = []
for (const element of $(".img-title")){
values.push( $(element).val() )
}
Или получить доступ к свойству собственного элемента с помощью .value
:
const values = []
for (const element of $(".img-title")){
values.push( element.value )
}
Или рассмотрите возможность использования .map
вместо:
const values = $(".img-title")
.map(function() {
return $(this).val();
})
.get();
(обязательно используйте .get()
в конце, чтобы получить массив, а не коллекцию jQuery)
Или, если хотите, полностью избегайте jQuery, не нужно включать большую библиотеку для чего-то такого простого:
const values = Array.prototype.map.call(
document.querySelectorAll('.img-title'),
element => element.value
);