setTimeout выдаёт ошибку «результат выражения не является функцией» - PullRequest
0 голосов
/ 06 марта 2011

У меня вызов setTimeout:

if ($cardOne instanceof jQuery){

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

    $cardOne = "";
}

вызов этой функции:

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

Это приводит к этой ошибке:

Результат выражения '$ card.removeClass' [undefined] не является функцией.

И я не уверен, что это значит. SetTimeOut хочет возвращаемое значение некоторых сортов? Я убедился, что $ card - это действительно объект jQuery (в данном случае DIV).

UPDATE:

Я добавил еще несколько примеров кода выше, чтобы указать, что я делаю неправильно. Pointy заставил меня понять, что проблема была в том, что $ card не был объектом jQuery, когда к нему вызывался метод removeClass.

Если вы посмотрите на мой пример кода, теперь задним числом видно, что я делал неправильно ... Я вызывал функцию внутри setTimeout, а затем сразу устанавливал переменную $ cardOne обратно в пустую строку. Итак, к тому времени, когда setTimeout вызвал функцию, переменная была сброшена и больше не являлась объектом jQuery.

Исправление состоит в том, чтобы переместить настройку объекта в пустую строку в функцию resetCard.

1 Ответ

3 голосов
/ 06 марта 2011

Что произойдет, если вы измените «resetCard» следующим образом:

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

Ошибка означает, что в объекте, на который ссылается параметр «$ card», отсутствует атрибут «removeClass».

...