Вам нужно исправить ссылку на self
и исправить вызов .load()
.
.load()
является асинхронным, поэтому он не завершается до того, как вы позвоните youWin()
и youLose()
сразу после,Вам нужна функция завершения, чтобы вы могли проверить выигрыш или проигрыш после успешного завершения .load()
.
refreshData()
должно быть структурировано следующим образом:
function refreshData() {
$('#ajaxGame').load('RefreshCurrentPlayerServlet #ajaxGame', function() {
youWin();
youlose();
});
}
Вы также должны изменить это:
t= self.setInterval('refreshData()',10000);
на это:
t = window.setInterval(refreshData, 10000);
Я не вижу, чтобы self
был даже определен, что могло также вызвать вашу проблему, и вы должны использовать ссылку на функцию напрямуювместо того, чтобы вставлять строку.
И, как проблема очистки, вы должны изменить оба случая этого:
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);
}
}
});