我正在使用带有部分渲染和 ajax 调用的 MVC。在我的一个结果表中,我有一个字段是计时器。
以下代码在我的局部视图上,每 30 秒呈现一次。其中一个字段是向用户显示的活动计时器:
<td><div id="@someID" class="nobutton"></div><script>setInterval(function () { startTimer('@startDateTime', '@someID') }, 500);</script></td>
这很好用,但是在进行 ajax 调用以刷新部分后,间隔函数仍在调用不再存在的旧 ID (someID)。
这是计时器的javascript:
<script type="text/javascript">
function startTime(dt, field){
var field = document.getElementById(field);
if (field == null)
return;
var rowTime = new Date(dt);
var rowTimems = rowTime.getTime(rowTime);
var currentTime = new Date();
var currentTimems = currentTime.getTime(currentTime);
var difference = currentTimems - rowTimems;
var hours = Math.floor(difference / 36e5),
minutes = Math.floor(difference % 36e5 / 60000),
seconds = Math.floor(difference % 60000 / 1000);
field.innerHTML = formatTime(hours) + ":" + formatTime(minutes) + ":" + formatTime(seconds);
</script>
刷新部分的主页上的调用非常简单:
var t = setInterval(function () {
$.ajax({
url: "MYURL",
type: "GET",
cache: false,
success: function (data) {
$("#summary").html(data);
}
});
}, 30000);
有没有办法杀死老前辈?为什么他们还在跑?