Как исправить Uncaught TypeError в JavaScript? - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь отправить форму определенного элемента на моей веб-странице, но я получаю

Uncaught TypeError: Cannot read property 'form' of undefined

Это скрипт JavaScript для моей веб-страницы.

<script type="text/javascript">
              var aTags = document.getElementsByName("s");
    for (var i=0;i<aTags.length;i++){
        aTags[i].addEventListener('click', function(e){
          e.preventDefault();
          bootbox.confirm({
    message: "This is a confirm with custom button text and color! Do you like it?",
    closeButton: false,
    buttons: {
        confirm: {
            label: 'Yes',
            className: 'btn-success'
        },
        cancel: {
            label: 'No',
            className: 'btn-danger'
        }
    },
    callback: function (result) {
      if(result){
        aTags[i].form.submit();
      }
    }
});
        });
            }
              </script>

1 Ответ

3 голосов
/ 01 мая 2019

Каждый из обработчиков кликов ссылается на одну и ту же переменную i.К тому времени, когда кнопка нажата, i уже давно увеличен до aTags.length.Поэтому aTags[i] разрешается до aTags[aTags.length], что не определено.

Самое простое решение - просто использовать let вместо var.Таким образом, каждый раз при прохождении цикла получается новая привязка переменной, и, таким образом, все обработчики щелчков связаны с правильным значением.

for (let i = 0; i < aTags.length; i++){
   // rest of the code the same
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...