cuốn sách gpt4 ai đã làm

javascript - 回调中的 setTimeout() 不起作用,为什么?

In lại Tác giả: Walker 123 更新时间:2023-11-28 11:14:07 26 4
mua khóa gpt4 Nike

我想知道为什么 setimout(fun(),time) 在这里不起作用:

上下文:这显示一条消息并隐藏它,我想让它等待 2 秒,但如果我按照以下操作它不会隐藏(通常我在没有 settimeout() 的情况下执行此操作

function mostrar_msj(msj){
$('#notificaciones').text(msj);
$('#notificaciones').animate({
top:$(window).scrollTop()+"px"
},
{
queue: false,
duration: 350
});
$("#notificaciones").slideDown(1000, setTimeout('cerrar()',2000));
}

function cerrar(){
$("#notificaciones").fadeOut(2000);
}

我只是很困惑,在这里:?

câu trả lời hay nhất

当您使用 jQuery 时,更容易使用 delay() :

$("#notificaciones").slideDown(1000).delay(2000).fadeOut(2000);

动画函数会自动排队。

但要回答你的实际问题:

  1. 您没有正确设置回调。这个

    $("#notificaciones").slideDown(1000, setTimeout('cerrar()',2000));

    会将setTimeoutcủa返回值đặt thànhslideDown的回调。正确的回调是

    $("#notificaciones").slideDown(1000, function() {
    setTimeout('cerrar()',2000);
    });

    但这并不能解释为什么 cerrar 没有像 setTimout 那样明显地被调用。这就引出了第二点:

  2. 如果将字符串传递给 setTimeout,则会在全局范围内对其进行求值。如果您在 ready 处理程序中包含这段代码,则 cerrar 不在全局范围内,因此不会被 JavaScript 找到。

    因此,不鼓励传递字符串。您应该传递一个函数引用:

    setTimeout(cerrar, 2000);

关于javascript - 回调中的 setTimeout() 不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411791/

26 4 0
Đề xuất bài viết: javascript - 仅选择直系子代
Đề xuất bài viết: css - Razor + Html.Raw() 带空格?
Đề xuất bài viết: javascript - 复制表行并增加所有名称属性
Đề xuất bài viết: JavaScript 语法?
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress