Незаконный оператор 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;
}
});
});
Ответы
Ответ 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
Вы не можете использовать продолжение. Так или иначе, это будет продолжаться автоматически, просто удалите это - и я думаю, что он должен работать с вашим описанием.