2017-11-02 9 views
0

私はsetTimeout()メソッドを使用してjQueryを使用していくつかのCSSプロパティを変更しようとしていますが、私のメソッドは機能しません。私は関数が実行されるはずであるとき、正確に "スクリプトエラー"を取得し続けます。コードエディタはjQueryに合わせて作られていないので、おそらくこれは私が手に入れるものです。原因を具体的にはsetTimeoutというキーワードに絞り込みました。その内部のコードブロックが原因でエラーが発生していません。私は周りを見回し、誰も私の現在の問題を抱えているようだ。だから何が問題なの?この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); 
} 
+0

'にconsole.log(本) ' – epascarello

答えて

0

このキーワードは正しくありません。コンテキストを変更しないためにラムダを使用することもできます。あるいは、変数に "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); 
} 
関連する問題