동일한 유형의 객체의 메소드에서 "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>
은 사용자가 하나를 누르면 내가 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);
}
}
}
어딘가에 : 내 객체를 시작하려면이 코드를 사용 버튼을 누르면 모든 것이 정상적으로 작동하지만 사용자가 하나의 버튼을 누르고 짧은 시간 간격 후에 다른 버튼을 누르면 첫 번째 버튼에 의해 트리거 된 액션이 중지되고 두 번째 버튼의 액션 만 실행됩니다 에드. 전역 변수 "that"이 두 번째 객체의 참조가된다는 것을 알고 있지만 이전에 호출 된 메소드를 차단하지 않는 자동 메커니즘을 만드는 방법을 알지 못합니다. 내가 어떤 실수를하는 경우
내 영어 사전 미안에 감사 : P
글쎄,하지만 setTimeout은 clearTimeout을 사용하여 호출을 취소하는 데 사용할 수있는 핸들도 반환합니다. https://developer.mozilla.org/en/window.clearTimeout – DanNsk
왜 그런지 모르겠지만 자바 스크립트를 사용하여 제 3 년 동안 이것을 결코 보지 못했습니다. 항상 취소 가능성 간격을 사용했습니다. +1. 어느 쪽이든 - 동일한 개념이 적용됩니다. 핸들을 캡처하고 작업 범위 밖에서 사용할 수 있는지 확인한 다음 필요한 경우 핸들을 사용하여 취소합니다. – Brian