Как мне получить доступ к этой переменной вне этого цикла jquery?

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть простой цикл jquery, который проходит через мою форму и

  1. проверяет, есть ли пустые поля.
  2. Если какие-либо из них пусты, пометьте их «пустым» классом и
  3. затем создайте переменную ‘error’

В основном:

 // check all the inputs have a value...
$('input').each(function() {

    if($(this).val() == '') {

        $(this).addClass('empty');
        var error = 1;

    }   

});
  

Это замечательно работает. Однако, по мере продолжения моего кода, я, похоже, не могу получить доступ к этой переменной ‘error’ … как будто она заблокирована внутри каждого цикла. Поскольку следующий код находится сразу после цикла .each(), я никогда не запускаю функцию my_error_function(), хотя я знаю, что критерии 1 и 2 работают.

 if(error == 1) {

    my_error_function();

} else {

    my_non_error_function();

}
  

Как мне получить доступ к этой переменной, чтобы я мог использовать ее результат в другом месте кода?

Ответ №1:

Определите вашу переменную ошибки вне вашей функции / цикла

 var error = 0;
$('input').each(function() {

    if($(this).val() == '') {

        $(this).addClass('empty');
        error = 1;

    }   

});
  

Ответ №2:

Определите переменную вне области видимости или присвоите ее глобальной переменной. Переменные с интервалом между именами также работают (например, foo.bar.error = 1)

 $('input').each(function() {
   if($(this).val() == '') {
    $(this).addClass('empty');
    window.error = 1;
   }   
});

...

alert(error);