2016-08-12 7 views
1

可能であれば、jQuery prototype/functionをリロードして、すべてのページを更新しないでください。時間の経過後に現在のリロード機能を再ロードする

my.prototype.reloadMe = function() { 
    setTimeout(function(){ 
     my.reloadMe(); 
    },1000); 
    alert('ok'); 
}; 

私は、関数内のsetTimeoutと試みたが、それはうまくいきませんでした:それは一度だけrefreshs。

あなたの提案や説明をお寄せいただきありがとうございます。

+0

あなたの 'setTimeout' tryを見せてもらえますか? – eisbehr

+0

'setTimeout'はあなたが望むものです。 "しかし、IDは動作しませんでした" - それを調査しようとする。何が起こった?コンソールにエラーがありますか? –

+0

投稿を編集しました。ありがとう – PSport

答えて

3

あなたはプロトタイプ関数を定義した後、あなたは目的関数としてそれを呼び出すようにしてみてください。 「my.reloadMe()は関数ではありません」というエラーが表示されます。

my.prototype.reloadMe = function() { 
    setTimeout(function(){ 
     my.reloadMe(); // "my" object does not contain "reloadMe" function 
    },1000); 
    alert('ok'); 
}; 

あなたがこの機能にアクセスしたい場合は、明示的にこのプロトタイプ関数を呼び出すことができ、次のいずれか

setTimeout(function(){ 
    my.prototype.reloadMe(); 
}, 1000); 

したり、オブジェクトをインスタンス化し、この関数を呼び出す:

の両方を行う
setTimeout(function(){ 
    new my().reloadMe(); 
}, 1000); 

正しいとは言えません。

最善の解決策は、あなたの匿名関数に名前を付けるためにあるように見えます:

my.prototype.reloadMe = function reload() { 
    setTimeout(reload, 1000); 
    alert('ok'); 
};); 

注1:あなたのコード内それはsetTimeoutているときに、setTimeOutを使用しています。 JSは大文字と小文字を区別します。おそらく、それはエラーの原因になる可能性があります。

注2:このコードは、無限ループで実行されます。だから、実際には毎秒アラートを受け取るでしょう。私はそれがあなたが達成しようとしているものであることを願っています:)

+0

あなたの答えをありがとう。それは明らかになった。問題が解決しました! :) – PSport

1

//Create your object: 
 

 
function myobject(){ 
 
    
 
} 
 

 
//add prototype to that object 
 

 
myobject.prototype.reloadMe = function(){ 
 
    
 
    // instead of recursion you can use interval 
 
    
 
    setInterval(function() { 
 
    alert('ok'); 
 
    }, 1000); 
 
} 
 

 
// instantiate that object 
 

 
var my = new myobject(); 
 

 
//call your function 
 

 
my.reloadMe();

+0

あなたの説明をありがとう。私は今より良く理解しています:) – PSport

2

それは正しいインスタンスを取得するためにthis.reloadMeでなければなりません。

my.prototype.reloadMe = function() { 
    var that = this; 

    setTimeOut(function(){ 
     that.reloadMe(); 
    }, 1000); 

    alert('ok'); 
}; 

しかし、これは無限ループです。あなたは一度だけそれをもう一度呼び出すことを望むなら、これを壊さなければなりません。あなたのコードで

my.prototype.reloadMe = function() { 
    var that = this; 

    if(!that.delayedCalled) { 
     setTimeOut(function() { 
      that.delayedCalled = true; 
      that.reloadMe(); 
     }, 1000); 
    } 

    alert('ok'); 
}; 
+0

あなたの説明をありがとう、本当にクリア! – PSport

関連する問題