Задать вопрос
@rapidum_alder

Почему не работает map в JavaScript?

Хочу сделать проверку формы до отправки.
(Слышал есть встроенный метод, но он не подходит т.к. у меня есть кнопка промежуточное сохранение и постоянная)
Когда пользователь нажимает на постоянной сохранение, надо проверить все селекторы в форме на значение на равное нулю.
Но когда я map'ом прохожу по всем элементом он ни чего не возвращает.
document.addEventListener("DOMContentLoaded", () => {
    let form = document.getElementById('MainForm');
    let btn = document.getElementById('btnPass');
    if (form) {
        let error = [];
        btn.addEventListener('click', event => {
            event.preventDefault();
            let strings = Array.from(form.querySelectorAll('.table_item'));
            console.log(strings);

            strings.map = ((element) => {
                console.log(element);

                let sel = element.querySelector('.selector');
                if (sel.value === '0') {
                    error [element.name] = sel.name;
                }
            });
            // if (error) {
            //
            // } else {
            //
            // }
        })
    }
});


В итоге console.log(strings) у меня отображает массив из строк таблицы.
Array(3) [ tr.table_item, tr.table_item, tr.table_item ]
а console.log(element); у меня пустота. т.е. даже не вызывается.

Пробовал вместо .map .forEach и менял стрелочную функцию на обычную.
strings.map = (function(element) {
  • Вопрос задан
  • 765 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 2
bootd
@bootd
Гугли и ты откроешь врата знаний!
Вы написали его неверно
// не
strings.map = function () {

}
//a
strings.map(function(){

})


Метод map должен возвращать значение, а вы ничего не возвращаете. Почитайте, как работает map для массивов. Ну а раз вам не нужно ничего возвращать, тогда это просто forEach
Ответ написан
Комментировать
@dimoff66
Кратко о себе: Я есть
map это функция, она должна быть вызвана, вы же делаете ей присвоение. К тому же если она ничего не возвращает, использовать ее бессмысленно, используйте вместо нее forEach

strings.forEach(element => {
  console.log(element);

  let sel = element.querySelector('.selector');
  if (sel.value === '0') {
    error [element.name] = sel.name;
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы