Javascript 设置超时,但不提供所需的结果
在这里,我的函数在单击后立即调用setTimout,但我希望它在单击10秒后启动Javascript 设置超时,但不提供所需的结果,javascript,jquery,Javascript,Jquery,在这里,我的函数在单击后立即调用setTimout,但我希望它在单击10秒后启动 $('#switchsubjects').click(function(e) { i++; var x=$('#subject-class-switch').html(); if(i<2) { $(this).append('<ul id="dcl"><li class="ui-btn-inner ui-li">Class</li>&
$('#switchsubjects').click(function(e)
{
i++;
var x=$('#subject-class-switch').html();
if(i<2)
{
$(this).append('<ul id="dcl"><li class="ui-btn-inner ui-li">Class</li><li class="ui-btn-inner ui-li">Subjects</li></ul>');
e.stopPropagation();
setTimeout(rm(),10000);
}
else
{
$('#dcl').remove();
i=0;
}
});
function rm()
{
console.log("working");
$('#dcl').remove();
i=0;
}
$(“#切换主题”)。单击(函数(e)
{
i++;
var x=$(“#主题类开关”).html();
如果(i试试这个:
setTimeout(rm ,10000); // note no parentheses after rm
setTimeout()
函数期望第一个参数是函数引用(或字符串,但字符串几乎总是错误的选择)。说rm()
实际上是在此时调用rm
函数,并将其返回值传递给setTimeout()
(在本例中,返回值为undefined
)。如果传递rm
,而不使用括号传递对函数的引用,则setTimeout
可以在指定的延迟后调用
对于更多信息和其他示例非常有用。您不了解函数调用和函数引用之间的区别。假设您有这个函数
function myFunction() {
// some code
}
那么这是一个即时函数调用
myFunction()
这是一个函数引用
myFunction
setTimeout的第一个参数必须是函数引用(或包含javascript代码的字符串,但不推荐使用)
否则,将立即执行rm()
,10秒后只计算其结果。…或包含字符串的变量-不必是文本。
setTimeout(rm, 10000);
setTimeout("rm()",10000);