如果 DIV 值根据 ActionResult 值更改,则停止计时器

Stop timer if DIV value changed based on ActionResult Value

我正在将文件上传到文件夹中,并将它们的详细信息保存到数据库中。在执行此任务时,我正在启动计时器并且在插入数据后我有兴趣停止计时器。

<div id="labelUploadingStartTime" name="labelUploadingStartTime"></div>
<div id="labelUploadingEndTime" name="labelUploadingEndTime"></div>

使用下面的函数,我在 labelUploadingStartTime 标签上显示 START TIME

function startUpdatingUploading_StartTimeIndicator() {       
        intervalIdUploadingStartTime = setInterval(
            function () {                
                $.post(
                    "/MyUpload/GetStartTime",
                    function (progress) {                        
                        $("#labelUploadingStartTime").html(progress);
                    }
                );
            },
            10
        );
    }

同时labelUploadingStartTime值设置在labelUploadingEndTime时我正在显示使用以下函数的倒计时详细信息。

function startUpdatingUploadingEndTimeIndicator() {
       $.post(  
            "/MyUpload/GetStartTime",
            function (progress) {                
                if (progress != null) {
                    intervalIdUploadingEndTime = setInterval(function () {
                        var currentTime = new Date();
                        var hours = currentTime.getHours();
                        var minutes = currentTime.getMinutes();
                        var seconds = currentTime.getSeconds();

                        // Add leading zeros
                        hours = (hours < 10 ? "0" : "") + hours;
                        minutes = (minutes < 10 ? "0" : "") + minutes;
                        seconds = (seconds < 10 ? "0" : "") + seconds;

                        // Compose the string for display
                        var currentTimeString = hours + ":" + minutes + ":" + seconds;
                        $("#labelUploadingEndTime").html(currentTimeString);
                    }, 1000);
                }
            }
        );
    }

现在我的兴趣是当数据被插入数据库时​​我想停止计时器并且在 labelUploadingEndTime 我想显示结束时间。

例如,

labelUploadingStartTime -- > 12:10:10

labelUploadingEndTime --> 12:12:30

如何停止定时器?

要回答您的问题,您可以使用 clearInterval() JS 函数停止计时器。您传入要停止的计时器 ID,例如:

clearInterval(intervalIdUploadingEndTime);

但是,我认为您根本不需要计时器。您可以使用 $.postsuccess 功能将完成时间添加到另一个标签。

function doUpload() {
  var startTime = new Date();
  $("#labelUploadingStartTime").html(startTime.toLocaleString());

  $.post(
    "/MyUpload/PostFiles",
    function () {                        
      var endTime = new Date();
      $("#labelUploadingEndTime").html(endTime.toLocaleString());
    }
  );
}

您的后端不需要 return 文件上传的开始和结束时间,您在客户端有该信息