js ,jquery中for,each循环,break报错Uncaught SyntaxError: Illegal break statement,return false不起用

1月 6, 2021 453点热度 0人点赞 0条评论

功能:需要关联案件,其中涉及到关联多个案件时,每个案件之间用逗号“,”隔开;

需求:提交前,需要先判断,案件编码是否输入正确;

方法:将字符串转换成数组后,遍历数组,通过ajax判断案件编码是否存在

问题:在检查到未存在案件编码,需要终止for循环并且提示。

1,通过rueturn无法终止,解决:改为break;

2,改为用break时,报错“Uncaught SyntaxError: Illegal break statement”,解决:改为return false,循环中return false相当于break,

3,eturn false不起用,原因是把return false,放在$.post()中,return false作用的是$.post(),而不是for(),解决:放在$.post()外。

代码:

$('#addFinance').click(function () {
//因为在$.post()里无法终止和弹出提示,所以定义个变量用于存放是那个案件编码错误
// 因为数组下标从0开始,所以初值设为-1
var flag = -1;
//存放案件号的ID
var caseIdStr = "";
//匹配英文逗号
var reg2 = new RegExp(",", "g");//g,表示全部替换。
var caseId = $('#caseId').val();//关联案件号
//字符串转换成数组,并清除数组中的空值
var caseNum = caseId.replace(reg2, ",").split(',').filter(s => $.trim(s).length > 0);
$.each(caseNum, function (e) {
$.ajaxSettings.async = false;
$.post('../handler/FDNote.ashx', { 'style': 'checkCaseId', 'ID': caseNum[e] }, function (data) {
console.log(data);
if (data == 0) {
flag = e + 1;
//相当于brack跳出循环,不会阻止后面的代码
//return false;//不起用,提出,放在$.post()外
}
else {
caseIdStr += data + ",";
}
})
$.ajaxSettings.async = true;
//检查到错误,跳出循环
if (flag != -1)
return false;
});

console.log("flag:" + flag);
if (flag != -1) {
layer.alert('案件编号“' + caseNum[flag - 1] + '”格式不正确,请检查!', {
skin: 'layui-layer-molv',
closeBtn: 0,
anim: 4 //动画类型
});
return;
}

扩展:

return false 就相当于break;

而continue则可以用return true代替。

 

 

 

jiacai

这个人很懒,什么都没留下

文章评论