Почему в синтаксически правильном JavaScript / jQuery выполнение никогда не выходит за рамки `$ ('form'). Submit (function (event) {`?

alxfyv

У меня есть JavaScript / jQuery, который я пытаюсь запустить локально для тестирования. Это начинается $( 'form' ).submit(function(event) {, но никогда не выходит за рамки этого. (Я поставил console.logсразу после этой строки. Он никогда не выполняется. Я знаю, что js выполняется, потому что выполняется console.logперед этой строкой.) Средство проверки синтаксиса не выдает ошибок.

JavaScript:

$( 'form' ).submit(function(event) {
 const SelectElms = $( 'select' );
  var  a          = [];
  var  selectVals = Array.from(SelectElms).reduce((a,n) => {
    if(n.value && n.value !== 'unsure' && n.value !== 'not attend') {
      a.push( {
                 'index': n,
                 'room': n.value
              }
            );
    }  // end if
    return a;
  });  //  end def arrow fn & reduce
  event.preventDefault();
});  //  end def anonymous fn & submit

В приведенном ниже фрагменте форма отображается правильно, но при отправке консоль на секунду отображает сообщение об ошибке, а затем исчезает. Он отображается слишком мало времени, чтобы его читать. Затем в области результатов появляется сообщение об ошибке «Пользовательский модуль ошибок не распознает эту ошибку».

Также, если хотите, проверьте правильность остальных js. Я хочу создать массив объектов, по одному объекту на <select>элемент формы. У каждого объекта должна быть позиция индекса и значение <select>элемента ({'index': n, 'room': n.value}).

В своем ответе на этот ранее вопрос , MisterJojo сделал что - то подобное , которые я пытался запустить его локально. Хотя он выполняется в его фрагменте, когда я запускаю его локально, он выдает ошибку TypeError, которую querySelector('#My-Form')возвращает null. Я скопировал и вставил его js и HTML. Форма есть id="My-Form"в <form>теге. Кроме того, средство проверки синтаксиса возвращает несколько ошибок. Итак, я не смог реализовать его решение или адаптировать его к этой проблеме. Примечание: он запускается в этом jsfiddle .

Большое спасибо за Вашу помощь.

Фрагмент:

$( 'form' ).submit(function(event) {
 const SelectElms = $( 'select' );
  var  a          = [];
  var  selectVals = Array.from(SelectElms).reduce((a,n) => {
    if(n.value && n.value !== 'unsure' && n.value !== 'not attend') {
      a.push( {
                 'index': n,
                 'room': n.value
              }
            );
    }  // end if
    return a;
  });  //  end def arrow fn & reduce
  event.preventDefault();
});  //  end def anonymous fn & submit
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post">
  <div>
    <label>First Name
    <input type="text" name="fname" size="25">
  </label>
  </div>
  <div>
    <label>Last Name
    <input type="text" name="lname" size="25">
  </label>
  </div>
  <div>
    <label>email address
    <input type="email" name="email" size="25">
  </label>
  </div>
  <div>
    <label>08:30 Keynote Speaker
    <select class="select" name="select 0830">
      <option value="unsure">unsure</option>
      <option value="attend">attend</option>
      <option value="not attend">not attend</option>
    </select>
  </label>
    <label>09:00 Classes
    <select class="select" name="select 0900">
      <option value="unsure">unsure</option>
      <option value="A">room A</option>
      <option value="B">room B</option>
    </select>
    </label>
    <label>10:30 Classes
    <select class="select" name="select 1030">
      <option value="unsure">unsure</option>
      <option value="A">room A</option>
      <option value="B">room B</option>
    </select>
  </label>
  </div>
  <div>
    <input type="submit" value="submit form">
  </div>
</form>

сообщение

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

$('form').submit(function(event) {
  event.preventDefault(); // <-- MOVE this to be able to see the errors
  const SelectElms = $('select');
  // var a = [];  <-- Not needed
  var selectVals = Array.from(SelectElms).reduce((a, n) => {
    if (n.value && n.value !== 'unsure' && n.value !== 'not attend') {
      a.push({
        'index': n,
        'room': n.value
      });
    } // end if
    return a;
  }, []); //  end def arrow fn & reduce   <-- A is being initialized here, the 
                                           // second argument to reduce
console.log(selectVals);
}); //  end def anonymous fn & submit
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post">
  <div>
    <label>First Name
    <input type="text" name="fname" size="25">
  </label>
  </div>
  <div>
    <label>Last Name
    <input type="text" name="lname" size="25">
  </label>
  </div>
  <div>
    <label>email address
    <input type="email" name="email" size="25">
  </label>
  </div>
  <div>
    <label>08:30 Keynote Speaker
    <select class="select" name="select 0830">
      <option value="unsure">unsure</option>
      <option value="attend">attend</option>
      <option value="not attend">not attend</option>
    </select>
  </label>
    <label>09:00 Classes
    <select class="select" name="select 0900">
      <option value="unsure">unsure</option>
      <option value="A">room A</option>
      <option value="B">room B</option>
    </select>
    </label>
    <label>10:30 Classes
    <select class="select" name="select 1030">
      <option value="unsure">unsure</option>
      <option value="A">room A</option>
      <option value="B">room B</option>
    </select>
  </label>
  </div>
  <div>
    <input type="submit" value="submit form">
  </div>
</form>

Однако reduceзапускается функция, которая уменьшает все элементы в массиве до одного значения, поэтому вы используете неправильную функцию. Из MDN :

Метод reduce () выполняет функцию сокращения (которую вы предоставляете) для каждого элемента массива, в результате чего получается одно выходное значение .

Используйте mapвместо этого.

 var a = [];
 var selectVals = Array.from(SelectElms).map((n, i) => {
   if (n.value && n.value !== 'unsure' && n.value !== 'not attend') {
     a.push({
       'index': i,
       'room': n.value
     });
   } // end if
   return a;
 });

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Как не использовать HttpClient с ЛЮБЫМ сертификата SSL, независимо от того, как «плохо» это

  3. 3

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  4. 4

    Elasticsearch - Нечеткий поиск не дает предложения

  5. 5

    Modbus Python Schneider PM5300

  6. 6

    Автозаполнение с Java, Redis, Elastic Search, Монго

  7. 7

    Ошибка «LINK: фатальная ошибка LNK1123: сбой при преобразовании в COFF: файл недействителен или поврежден» после установки Visual Studio 2012 Release Preview

  8. 8

    (fields.E300) Поле определяет связь с моделью, которая либо не установлена, либо является абстрактной.

  9. 9

    Проблемы со сборкой Python Image Registration Toolkit

  10. 10

    Vue js CLI 2 импортирует и использует плагин javascript

  11. 11

    Как отправить файл с сообщением в Discord с помощью JDA?

  12. 12

    В чем разница между CRC-16 / CCITT-FALSE и CRC-16 / X-25?

  13. 13

    Single legend for Plotly subplot for line plots created from two data frames in R

  14. 14

    Vim - автокоманды игнорируются в коде автокоманд

  15. 15

    Метод ошибки Illuminate \\ Database \\ Eloquent \\ Collection :: save не существует. в Laravel

  16. 16

    Статус HTTP 403 - ожидаемый токен CSRF не найден

  17. 17

    Ленивое объединение FPU в Cortex-M4F

  18. 18

    Работа с отсутствующими значениями для одной переменной в R

  19. 19

    Как очистить или очистить StringBuilder?

  20. 20

    PyQt5 не работает как «подходящий UI Toolkit» для Mayavi с Python 3.6.

  21. 21

    Vue 2 с Vue CLI - как сделать src / static static, чтобы я мог использовать изображения, которые там есть?

популярныйтег

файл