繁体   English   中英

用Javascript模拟进度条

[英]Simulating a Progressbar with Javascript

我想增加一个进度条的价值。 当达到最大值时,应停止。 此代码应模拟服务器调用,用户必须等待,并且应禁用输入。

 function serverCall() { var container = $("#disabledBackgroundContainer"), progressBar = $("#progressBar"), duration = 5000, currentProgess = 0, steps = 1; progressBar.prop("max", duration); container.css("display", "block"); currentProgess = setInterval(function () { currentProgess += steps; progressBar.val(currentProgess); if (currentProgess >= duration) { clearInterval(currentProgess); container.css("display", "none"); } }, steps); } 
 #disabledBackgroundContainer { top: 0; left: 0; width: 100%; height: 100%; display: none; position: absolute; background-color: #333333; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="btn btnDark" onclick="serverCall()">Server Call</button> <div id="disabledBackgroundContainer"> <progress id="progressBar"></progress> </div> 

如您所见,progessbar永不停止,似乎我的代码中出现了循环。 但是我没有正确的方法来解决这个问题。

您将currentProgess用于两种不同的事物:计时器ID和要检查的增量编号。

您需要使用两个不同的变量:

var timer = setInterval(function () {
    currentProgess += steps;
    progressBar.val(currentProgess);

    if (currentProgess >= duration) {
        clearInterval(timer);
        container.css("display", "none");
    }
}, steps);

其次,从HTML id属性中删除哈希。 应该是id="progressBar" 哈希仅具有作为CSS选择器的含义(在代码和样式部分):

 function serverCall() { var container = $("#disabledBackgroundContainer"), progressBar = $("#progressBar"), duration = 5000, currentProgess = 0, steps = 1; progressBar.attr("max", duration); progressBar.attr("value", 2000); container.css("display", "block"); var timer = setInterval(function () { currentProgess += steps; progressBar.attr('value', currentProgess); if (currentProgess >= duration) { clearInterval(timer); container.css("display", "none"); } }, steps); } 
 #disabledBackgroundContainer { top: 0; left: 0; width: 100%; height: 100%; display: none; position: absolute; background-color: #333333; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="btn btnDark" onclick="serverCall()">Server Call</button> <div id="disabledBackgroundContainer"> <progress id="progressBar"></progress> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM