Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript语句在返回后执行_Javascript_Jquery - Fatal编程技术网

Javascript语句在返回后执行

Javascript语句在返回后执行,javascript,jquery,Javascript,Jquery,这是我的密码: $.each(json.ids, function(i, v) { if ($("#user").val() === v.username) { if ($("#pw").val() === v.password) { window.location = '/menu.html'; return; //THIS RETURN }

这是我的密码:

    $.each(json.ids, function(i, v) {
        if ($("#user").val() === v.username) {
            if ($("#pw").val() === v.password) {
                window.location = '/menu.html';
                return; //THIS RETURN
            }
            $("#errorblock").text("incorrect password").show().fadeOut(1000);
            return false;
        }
        event.preventDefault();
        $("#errorblock").text("no user found").show().fadeOut(1000);
    });

json是一个包含json格式数据的变量。奇怪的是,一旦您输入嵌套的if(
if($(“#pw”).val()==v.password)
,窗口将正确地更改为menu.html,但在更改窗口之前,“密码不正确”或“未找到用户”字样将立即闪烁。我可以通过某种变通方法解决这个问题,但我很好奇为什么会发生这种情况——返回不应该停止代码的执行吗?这里是否存在一些语法(或其他)错误,我应该修复以防止出现这种情况

与其在each中执行逻辑,不如在处理之前先找到用户

var username=$(“#user”).val();
var password=$(“#pw”).val();
//根据用户的用户名查找用户
var user=$.grep(json.ids,函数(用户){
返回user.username==用户名;
});
//如果找到用户,请检查其密码
if(用户长度){
如果(用户[0]。密码===密码){
//为好的理由重新引导他们
window.location='/menu.html';
}否则{
//显示不正确的密码消息
$(“#errorblock”).text(“不正确的密码”).show().fadeOut(1000);
}
}否则{
//找不到用户,请执行任何操作
event.preventDefault();
$(“#errorblock”).text(“未找到用户”).show().fadeOut(1000);

}
如果条件被传递,则永远不会执行返回,更改位置会停止执行,并加载新页面。
return
仅从
$回调返回。each()
回调函数,而不是包含的函数。
$。each()
将继续处理列表的其余部分。函数的返回发生在
每个
的回调函数中,该回调函数将只从其中一个回调函数返回,它将执行下一个
事件。pre…
语句,如果没有密码,也将执行
不正确的…
哦,好!那么如何从
中完全返回每个
?您应该尝试返回false;而不是什么都不回谢谢!但我刚刚查阅了grep,它似乎改变了数组的实际数据,我不想讨论这个问题。我误解了/可以使用吗?是的,我知道哈哈,但我只是在做一个学习练习。
$.grep
只是数组中的一个查找,返回原始列表中元素的子集。是的,如果这些元素不是基本变量类型,更改它们也会影响原始数组。然而,在这个用例中,元素上的任何内容都没有改变。我们只是在做比较(==),所以这不是一个问题。根据您需要的浏览器支持,您也可以使用过滤器达到相同的效果。