同じタイプのオブジェクトのメソッドでは、 "setTimeout"の使用について助けが必要です。私はそれらを使用するHTMLコード内のどこか同じタイプの複数のオブジェクトのメソッドのsetTimeout
obj1 = new myObject('Something here');
obj2 = new myObject('Something else here');
:
<button onclick="obj1.show()">Something here</button>
<button onclick="obj2.show()">Something else here</button>
は、ユーザーが1つを押すと、私は2つのオブジェクトを持っている
function myObject(param){
this.content = document.createElement('div');
this.content.style.opacity = 0;
this.content.innerHTML = param;
document.body.appendChild(this.content);
this.show = function(){
if(this.content.style.opacity < 1){
this.content.style.opacity = (parseFloat(this.content.style.opacity) + 0.1).toFixed(1);
that = this;
setTimeout(function(){that.show();},100);
}
}
this.hide = function(){
if(this.content.style.opacity > 0){
this.content.style.opacity = (parseFloat(this.content.style.opacity) - 0.1).toFixed(1);
that = this;
setTimeout(function(){that.hide();},100);
}
}
}
どこかを:私は私のオブジェクトを開始するには、このコードを使用しますボタンはすべてうまくいくが、ユーザがあるボタンを押した後、短い時間間隔後にもう一方のボタンを押すと、最初のボタンによってトリガされたアクションは停止し、2番目のボタンのアクションのみが実行されるed。 私はグローバル変数 "that"が2番目のオブジェクトのrefenceになることを理解していますが、以前に呼ばれたメソッドをブロックしない自動メカニズムの作成方法はわかりません。 P
でも、setTimeoutは、clearTimeoutを使用して呼び出しをキャンセルするために使用できるハンドルを返します。 https://developer.mozilla.org/en/window.clearTimeout – DanNsk
なぜか分かりませんが、JavaScriptを使って何年もの間、私は決してこれを探しませんでした。私はいつも取り消し可能な間隔を使用してきました。 +1。いずれにしても、同じ概念が適用されます。ハンドルをキャプチャし、操作の範囲外で使用できることを確認し、必要に応じてハンドルを使用してキャンセルします。 – Brian