点击提交后,用ruturn终止了程序运行,并出现弹窗.我想让点击继续按钮接着执行程序,输出333.
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>
</head>
<body>
<input type="text" name="" id="username">
<button id="btn">提交</button>
<div class="popup">
<div class="btn_box">
<p id="confirm">继续</p>
<p id="replace">取消</p>
</div>
</div>
</body>
<style>
.popup{display: none;width:500px;max-width:100%;position: absolute;padding:20px 30px;top: 50%;left: 50%;transform: translate(-50%,-50%);background-color: rgba(61,60,61,1);z-index:9999;}
.popup .btn_box{display: flex;justify-content: space-around;align-items: center;}
.popup .btn_box p{padding:6px 16px;background-color: #f4bc24;font-size: 16px;color:#fff;margin-bottom: 0px;cursor: pointer;}
</style>
<script>
var btn = document.getElementById("btn");
btn.onclick = function(callback){
console.log(111);
console.log(222);
var val = document.getElementById("username").value;
if(val == "123"){
$(".popup").show();
$("#confirm").unbind('click').bind('click', function (){
$(".popup").hide();
});
$("#replace").click(function(){
$(".popup").hide();
return;
});
return;
}
console.log(333);
}
</script>
</html>
首先这是异步执行的!!!
题主理解的执行顺序我猜可能是:
不可以的, 题主应该是刚学习DOM事件吧, 实际的执行逻辑是这样的:
然后:
此时程序其实已经执行结束了(第一条红线位置):
当点击继续时执行的是:
也就是这个注册的事件:
这里传入的是一个函数, 这题主应该知道, 一般称之为
回调函数
. 该回调函数中只进行了隐藏并没有打印, 因此可以将console.log(333);
放进回调函数中即:对JS 的执行顺序(因为它是异步执行的)的疑惑在初学时也许常见(反正我绕了许久, 尤其还因为学过C语言与Python多进程), 多写些代码, 就会明白了