하지 않는 이유는 무엇 clearInterval()작동합니까?
-
14-12-2019 - |
문제
나는 새로운 자바스크립트와는 데 문제가 있으로 이 스크립트입니다.그것의 일부 웹 게임과 스크립트가한다고 가정 페이지를 새로 고침할 때까지 플레이어 승 또는 잃는다.몇 가지 이유로 그것을 멈추지 않는 상쾌한,나는 알림 기능을 확인하는 경우 이 함수 작품과를 얻을 경고 하지만 그것은 여전히 계속 상쾌한 페이지.무엇이 잘못된 것입니까?
var t;
$(document).ready(function () {
intervals();
});
function intervals() {
t = self.setInterval('refreshData()', 10000);
}
function youWin() {
var f = $('#status:contains("YOU ARE THE WINNER!")');
if (f.length > 0) {
alert("YOU ARE THE WINNER!");
t = clearInterval(t);
}
}
function youlose() {
var f = $('#status:contains("You lost!")');
if (f.length > 0) {
alert("You lost!");
t = clearInterval(t);
}
}
function refreshData() {
$('#ajaxGame').load('RefreshCurrentPlayerServlet #ajaxGame');
youWin();
youlose();
}
해결책
당신을 수정해야에 대한 참조 self
정 .load()
전화입니다.
.load()
비동기하지 않도록 전체를 호출하기 전에 youWin()
고 youLose()
후에 바로 그것.당신이 필요 완성 기능을 확인할 수 있도록 승패후 .load()
가 성공적으로 완료됩니다.
refreshData()
해야은 다음과 같은 폴더 구조를 가집니다:
function refreshData() {
$('#ajaxGame').load('RefreshCurrentPlayerServlet #ajaxGame', function() {
youWin();
youlose();
});
}
당신은 또한 change this:
t= self.setInterval('refreshData()',10000);
다.
t = window.setInterval(refreshData, 10000);
나는 그렇게 생각하지 않는다 self
도를 정의하도록 할 수 있도 문제가 발생하고 사용해야 합니다 기능 직접 참조보다에 넣어는 문자열을 사용합니다.
그리고,정리 문제,변경해야 합니다 모두 사건의 this:
t = clearInterval(t);
다.
clearInterval(t);
여기에 청소 버전의 코드도 없는 세계의 변수하고 불필요한 기능을 정의:
$(document).ready(function() {
var t = window.setInterval(function() {
$('#ajaxGame').load('RefreshCurrentPlayerServlet #ajaxGame', function() {
youWin();
youlose();
});
}, 10000);
function youWin() {
if ($('#status:contains("YOU ARE THE WINNER!")').length) {
alert("YOU ARE THE WINNER!");
clearInterval(t);
}
}
function youlose() {
if ($('#status:contains("You lost!")').length) {
alert("You lost!");
clearInterval(t);
}
}
});
제휴하지 않습니다 StackOverflow