Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 设置超时,但不提供所需的结果_Javascript_Jquery - Fatal编程技术网

Javascript 设置超时,但不提供所需的结果

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>&

在这里,我的函数在单击后立即调用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><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);