setTimeout给出'表达式的结果不是函数'错误

时间:2011-03-06 16:54:13

标签: javascript jquery settimeout

我有一个setTimeout调用:

if ($cardOne instanceof jQuery){

    setTimeout(function() {
        resetCard($cardOne);
    }, 1000);

    $cardOne = "";
}

调用此函数:

function resetCard($card){
  $card.removeClass('show');
}

这会导致此错误:

表达式'$ card.removeClass'[undefined]的结果不是函数。

我不确定这意味着什么。 setTimeOut是否想要某些类型的返回值?我已经确认$ card确实是一个jQuery对象(在本例中是一个DIV)。

更新:

我在上面添加了一些示例代码,指出我做错了什么。 Pointy让我意识到问题是当调用removeClass时$ card不是jQuery对象。

如果你查看我的示例代码,事后很明显我做错了什么...我在setTimeout中调用函数然后立即将$ cardOne var设置回空字符串。因此,在setTimeout调用该函数时,var已被重置,不再是jQuery对象。

修复方法是将对象的设置移动到空字符串到resetCard函数中。

1 个答案:

答案 0 :(得分:3)

如果您按如下方式更改“resetCard”会发生什么:

function resetCard($card) {
  $($card).removeClass('show');
}

错误意味着“$ card”参数引用的对象上没有“removeClass”属性。