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
返回的值。还要考虑回调中的这个将是什么。