为什么这个setTimeout方法不起作用?

时间:2017-11-02 01:48:38

标签: javascript jquery html css settimeout

我正在尝试使用setTimeout()方法使用jQuery更改一些CSS属性,但我的方法不起作用。当函数应该被执行时,我一直得到“脚本错误”。代码编辑器不适合jQuery,所以我可能会得到它。我特别将原因缩小到setTimeout关键字,其中的代码块不会导致错误。我环顾四周,似乎没有其他人有我当前的问题。那有什么不对?

else{//cards do NOT match
    $(this).css("backgroundColor", "#ff6666");
    $(cardId).css("backgroundColor", "#ff6666");
    setTimeout(function(){
       $(cardId).children().hide();
       $(cardId).css("backgroundColor", "white");
       $(this).children().hide();
       $(this).css("backgroundColor", "white");
    }, 1500);
}

1 个答案:

答案 0 :(得分:0)

您的关键字不正确。您可以使用lambda来不更改上下文。或者您可以在变量中设置“this”。

else {//cards do NOT match
    $(this).css("backgroundColor", "#ff6666");
    $(cardId).css("backgroundColor", "#ff6666");
    setTimeout(() => {
       $(cardId).children().hide();
       $(cardId).css("backgroundColor", "white");
       $(this).children().hide();
       $(this).css("backgroundColor", "white");
    }, 1500);
}

var self = this;
else {//cards do NOT match
    $(this).css("backgroundColor", "#ff6666");
    $(cardId).css("backgroundColor", "#ff6666");
    setTimeout(function(){
       $(cardId).children().hide();
       $(cardId).css("backgroundColor", "white");
       $(self).children().hide();
       $(self).css("backgroundColor", "white");
    }, 1500);
}