我正在尝试为JS回调运行w3schools示例,它在第一次回调时运行正常并显示“段落现在已隐藏正常”,但不是第二次警报,我做错了什么?或者是否允许嵌套回调?
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("p").hide("slow", function(){
alert("The paragraph is now hidden OK", function(){
alert("2nd alert FAIL");
});
});
});
});
</script>
</head>
<body>
<button>Hide</button>
<p>This is a paragraph with little content.</p>
</body>
</html>
编辑1:
我需要做什么才能支持我的自定义函数回调?
编辑2
已解决,仅支持功能回调:
// A function that takes two parameters, the last one a callback function
function getInput (options, callback) {
allUserData.push (options);
callback (options);
}
答案 0 :(得分:4)
alert
没有提供回调功能。 alert
是一个20世纪90年代的时代错误,它使得浏览器的主要JavaScript线程在警报显示时突然停止,因此在特定情况下,只需将您当前拥有的代码放入回调中 alert
。 (或者更好的是:不要使用alert
。:-))alert
(以及prompt
和confirm
)是整体&#34;的不合时宜的例外情况。不要阻止线程&#34;规则。
没有理由其他回调也是嵌套的,不会起作用。确实他们这样做:
$(document).ready(function(){
$("button").click(function(){
$("p").hide("slow", function(){
alert("The paragraph is now hidden OK");
alert("2nd alert FAIL");
});
});
});
&#13;
<button>Hide</button>
<p>This is a paragraph with little content.</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
alert()
方法无法接受函数。只能显示字符串或对象。见here
答案 2 :(得分:0)
允许嵌套回调,但通常不鼓励(使代码更难以阅读)。
但问题是,alert
不接受回调,只需要一个参数(参见https://www.w3schools.com/jsref/met_win_alert.asp)
此代码应该有效:
$(document).ready(function(){
$("button").click(function(){
$("p").hide("slow", function(){
alert("The paragraph is now hidden OK");
alert("2nd alert FAIL");
});
});
});