0

settimeout 関数内の変数にアクセスできません。つまり、次の例では setTimeout(pop.hide()), 3000); です。ここでpop. hide()は settimeout 内では機能しません...

任意のソリューション..

HTML

<div id="logincheck"></div>

JS:

 function logClick() {
                    var sEmail = $('#username').val();
                    var sPassword = $('#password').val();

                    var pop = $('#logincheck');

                    if (($.trim(sEmail).length == 0) && ($.trim(sPassword).length == 0)) {

                        pop.show();

                        pop.html('Enter EmailId and Password ');
                        setTimeout(pop.hide()), 3000);
                    }

ありがとうAB

4

4 に答える 4

4

を呼び出し pop.hide()て、その戻り値を に渡していますsetTimeoutfoo(bar()) を呼び出し barて戻り値を渡す方法とまったく同じfooです。(むしろ、あなたはそうなるでしょうが、余分な)ものがあるので、実際には構文エラーです — JavaScript コンソールにその構文エラーが表示されるはずです。)

あなたが探しています:

setTimeout(function() {
    pop.hide();
}, 3000);

そこで、無名関数を定義し (ただし呼び出しはしません)、その関数への参照を に渡しますsetTimeout。タイマーが切れると、その関数が呼び出され、 が呼び出されますpop.hide()

または、jQuery を使用しているので、その$.proxy:

setTimeout($.proxy(pop.hide, pop), 3000);
// or
setTimeout($.proxy(pop, "hide"), 3000);

または、ES5 がbind利用可能な場合 (ネイティブまたは ES5 shim 経由):

setTimeout(pop.hide.bind(pop), 3000);

これらは基本的に、上記の無名関数と同じことを行います。

于 2013-07-16T08:39:54.073 に答える
1

次の(無名関数)を使用できます

setTimeout(function () {
    pop.hide()
}, 3000);

)ところで、 setTimeout コードに構文エラー (余分な) があります

于 2013-07-16T08:39:52.033 に答える
0

logincheck で pop に割り当てる

var pop = $('#logincheck');

この方法でタイムアウトを設定する

setTimeout(function(){ pop.hide()} , 3000);
于 2013-07-16T08:42:08.097 に答える
0

コードは次のようになります。

setTimeout(function() {
  pop.hide();
}, 3000);
于 2013-07-16T08:43:17.287 に答える