Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 为什么setTimeout不能在我的代码中工作?我需要可行的代码)_Javascript_Jquery - Fatal编程技术网

Javascript 为什么setTimeout不能在我的代码中工作?我需要可行的代码)

Javascript 为什么setTimeout不能在我的代码中工作?我需要可行的代码),javascript,jquery,Javascript,Jquery,我不知道为什么我的代码不起作用。请帮忙 $('nav').mouseout(setTimeout(function() { $(this).removeClass('subm') }, 1000)); 如果没有设置超时,则工作正常。setTimeout(…)将立即被调用。它返回新挂起超时的id号。在此仅注册和调用一次超时。代码的执行过程如下所示: setTimeout(function() { $(this).removeClass('subm') }, 1000); // = 2

我不知道为什么我的代码不起作用。请帮忙

$('nav').mouseout(setTimeout(function() {
    $(this).removeClass('subm')
}, 1000));
如果没有设置超时,则工作正常。

setTimeout(…)
将立即被调用。它返回新挂起超时的id号。在此仅注册和调用一次超时。代码的执行过程如下所示:

setTimeout(function() {
  $(this).removeClass('subm')
}, 1000);
// = 2

$('nav').mouseout(2);
您需要传递.mouseout()一个每次调用setTimeout的函数。您还需要修复此引用,它在setTimeout回调中是不同的。这应该解决两个问题:

$('nav').mouseout(function() {
  var self = this;
  setTimeout(function() {
    $(self).removeClass('subm')
  }, 1000);
});
正在立即调用设置超时(…)。它返回新挂起超时的id号。在此仅注册和调用一次超时。代码的执行过程如下所示:

setTimeout(function() {
  $(this).removeClass('subm')
}, 1000);
// = 2

$('nav').mouseout(2);
您需要传递.mouseout()一个每次调用setTimeout的函数。您还需要修复此引用,它在setTimeout回调中是不同的。这应该解决两个问题:

$('nav').mouseout(function() {
  var self = this;
  setTimeout(function() {
    $(self).removeClass('subm')
  }, 1000);
});

在javascript中,与大多数其他语言一样,执行此操作时:

variable = some_function();
a_function(another_function());
$('nav').mouseout(setTimeout(..));
您正在将函数的返回值传递给变量。同样,当您这样做时:

variable = some_function();
a_function(another_function());
$('nav').mouseout(setTimeout(..));
将另一个函数的返回值作为参数传递给函数

这在javascript、C、PHP、Ruby甚至Fortran中都可以使用

因此,当您这样做时:

variable = some_function();
a_function(another_function());
$('nav').mouseout(setTimeout(..));
您正在将
setTimeout
的返回值作为参数传递给
mouseout
。和
setTimeout
返回可在
cleartimout
中使用的数字。所以你基本上是这样做的:

$('nav').mouseout(a_number);
您想要的是传递一个函数:

$('nav').mouseout(function(){setTimeout(..)});
或者,如果您觉得难以阅读,请执行以下操作:

function handleMouseOut () {
    setTimeout(...);
}
$('nav').mouseout(handleMouseOut); // note we're passing a function here
                                   // not calling it

在javascript中,与大多数其他语言一样,执行此操作时:

variable = some_function();
a_function(another_function());
$('nav').mouseout(setTimeout(..));
您正在将函数的返回值传递给变量。同样,当您这样做时:

variable = some_function();
a_function(another_function());
$('nav').mouseout(setTimeout(..));
将另一个函数的返回值作为参数传递给函数

这在javascript、C、PHP、Ruby甚至Fortran中都可以使用

因此,当您这样做时:

variable = some_function();
a_function(another_function());
$('nav').mouseout(setTimeout(..));
您正在将
setTimeout
的返回值作为参数传递给
mouseout
。和
setTimeout
返回可在
cleartimout
中使用的数字。所以你基本上是这样做的:

$('nav').mouseout(a_number);
您想要的是传递一个函数:

$('nav').mouseout(function(){setTimeout(..)});
或者,如果您觉得难以阅读,请执行以下操作:

function handleMouseOut () {
    setTimeout(...);
}
$('nav').mouseout(handleMouseOut); // note we're passing a function here
                                   // not calling it

您正在调用setTimeout,而不是将其传递给mouseout。请考虑
moueout
期望的值以及
setTimeout
返回的值。还要考虑回调中的
这个
将是什么。您正在调用setTimeout,而不是将其传递给mouseout。考虑
moueout
期望的值以及
setTimeout
返回的值。还要考虑回调中的
这个
将是什么。