javascript - setTimeout 给出 'result of expression is not a function' 错误

标签 javascript jquery settimeout

我有一个 setTimeout 调用:

if ($cardOne instanceof jQuery){

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

    $cardOne = "";
}

调用此函数:

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

这会导致此错误:

表达式“$card.removeClass”的结果[未定义]不是函数。

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

更新:

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

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

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

最佳答案

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

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

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

关于javascript - setTimeout 给出 'result of expression is not a function' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211889/

相关文章:

javascript - 将括号添加到字符串数组中的最小和最大数字

javascript - Safari 中奇怪的 jQuery $(window).load() 行为

javascript - 具有溢出问题的固定/流动 div

javascript - 淡入文档片段

javascript - 从另一个单元格更改一个单元格的内容

jquery - 响应式网站中的 CSS/jquery 错误

jquery - 延迟后淡出 jQuery 菜单

javascript - 无法使用 DynamoDB 节点 SDK docClient 从 DynamoDB 表读取项目

javascript - 如何在 for 循环中使用 setInterval 或 setTimeout?

javascript - 如何在异步 forEach 循环中添加延迟