Подтвердить что ты не робот

Незаконный оператор continue в javascript $.each loop

Я получаю сообщение об ошибке, что у этого есть незаконный оператор продолжения. У меня есть список слов для проверки проверки формы, и проблема в том, что это соответствовало некоторым подстрокам зарезервированным словам, поэтому я создал еще один массив чистых слов для соответствия. Если он соответствует чистому слову, продолжайте else, если он соответствует зарезервированному предупреждению о словах пользователя

$.each(resword,function(){
        $.each(cleanword,function(){
            if ( resword == cleanword ){
                continue;
            }
            else if ( filterName.toLowerCase().indexOf(this) != -1 ) {
                console.log("bad word");
                filterElem.css('border','2px solid red');
                window.alert("You can not include '" + this + "' in your Filter Name");
                fail = true;
            }
        });
    });
4b9b3361

Ответ 1

Оператор continue отлично подходит для обычных циклов JavaScript, но для метода jQuery each требуется использовать инструкцию return. Верните все, что не является ложным, и оно будет вести себя как continue. Верните false, и он будет вести себя как break:

$.each(cleanword,function(){
    if ( resword == cleanword ){
        return true;
    }
    else if ( filterName.toLowerCase().indexOf(this) != -1 ) {
        //...your code...
    }
});

Для получения дополнительной информации см. jQuery docs.

Ответ 2

Заменить продолжение с помощью

return true;

Ответ 3

Вы используете continue, который предназначен для javascript for циклов внутри обработчика jQuery each. Это не сработает. Эквивалент continue в jquery each, хотя и возвращает неверное значение.

if ( resword == cleanword ){
  return true;
}

Ответ 4

В цикле jQuery.each вам нужно либо вернуть true, либо false, чтобы изменить петлевые взаимодействия:

Мы можем разбить цикл $.each() на конкретной итерации, сделав функция обратного вызова возвращает false. Возврат не-false - это то же самое, что и continue в цикле for; он немедленно перейдет к следующему итерации.

Итак, вам нужно будет сделать это:

$.each(resword,function(){
    $.each(cleanword,function(){
        if ( resword == cleanword ){
            return true;
        }
        else if ( filterName.toLowerCase().indexOf(this) != -1 ) {
            console.log("bad word");
            filterElem.css('border','2px solid red');
            window.alert("You can not include '" + this + "' in your Filter Name");
            fail = true;
        }
    });
});

Ответ 5

в JQuery каждый метод мы вызываем функцию каждый раз, когда мы зацикливаем внутри массива, поэтому continue не будет работать, нам нужно return true выйти из функции. только в простых циклах без анонимной функции мы можем использовать continue

Ответ 6

Вы не можете использовать продолжение. Так или иначе, это будет продолжаться автоматически, просто удалите это - и я думаю, что он должен работать с вашим описанием.