Ton*_*bet 0 javascript jquery settimeout
我想知道为什么setimout(fun(),time)在这里不起作用:
上下文:这显示一条消息并隐藏它,我想让它等待2秒,但如果我这样做它不会隐藏(通常我没有setimeout()
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);
}
我只是困惑,在这里:?
当您使用jQuery时,更容易使用delay():
$("#notificaciones").slideDown(1000).delay(2000).fadeOut(2000);
动画功能会自动排队.
但要回答你的实际问题:
您没有正确设置回调.这个
$("#notificaciones").slideDown(1000, setTimeout('cerrar()',2000));
将设置返回值的setTimeout回调的slideDown.一个适当的回调将是
$("#notificaciones").slideDown(1000, function() {
    setTimeout('cerrar()',2000);
});
但这并没有解释为什么cerrar没有被称为明显setTimout 被称为.这将我们带到第二点:
如果将字符串传递给setTimeout,则在全局范围内进行评估.如果你在ready处理程序中有这段代码,那么cerrar它不在全局范围内,因此JavaScript找不到.
因此,不鼓励传递字符串.你应该传递一个函数引用:
setTimeout(cerrar, 2000);
| 归档时间: | 
 | 
| 查看次数: | 1971 次 | 
| 最近记录: |