2010年5月7日金曜日

jquery使用時にsetTimeoutでエラー

カート入力時などに、
フェードイン、アウトの処理で「追加しましたよ」とか、「削除しましたよ」とか出そうとした時。

動作としては問題なく動いたが、エラーコンソールではエラーが発生。

まず、

$("#addSign").fadeIn("slow");
setTimeout($("#addSign").fadeOut("slow"), 3000);

と直接setTimeoutにエフェクトを書いた場合は、
missing after element listって出ました。

なので、今度は一度関数をかませて、

$("#addSign").fadeIn("slow");
setTimeout(fadeOutFunc("#addSign"), 3000);
function fadeOutFunc(divName){
$(divName).fadeOut("slow")
}

とおこなったところ。
useless setTimeout call (missing quotes around argment?)
とエラーが発生。

クォーテーション入れてるけどなーと
思って検索かけると海外のフォーラムでヒントを見つけました。

setTimeout('fadeOutFunc("#addSign")', 3000);

どうやら関数を呼ぶときも、シングルで囲んでやる必要があったみたい。
引数があったからかな?
とりあえず問題は解消したので、原因はほっておきます。

あとで調べる。