如何在 jQuery 中创建百分比计数器?
How do I create a percentage counter in jQuery?
我试图创建一个百分比计数器,但它没有做我需要的事情。它只显示 100%。但是我需要逐步显示所有 0 到 100%!我该如何更改?
setInterval(function per(p = 0) {
for (p = 1; p <= 100; p++) {
$(".percentage").text(p + "%");
}
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="percentage"></p>
问题是因为 for
循环在几分之一秒内运行,与 setInterval 无关。
要解决此问题,您可以更改逻辑以使用递归,然后将每次迭代延迟 1 秒,如下所示:
function updatePercentage(p) {
p = p || 0;
$(".percentage").text(p + "%");
if (p < 100) {
setTimeout(function() {
updatePercentage(++p);
}, 1000);
}
}
updatePercentage();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="percentage"></p>
我试图创建一个百分比计数器,但它没有做我需要的事情。它只显示 100%。但是我需要逐步显示所有 0 到 100%!我该如何更改?
setInterval(function per(p = 0) {
for (p = 1; p <= 100; p++) {
$(".percentage").text(p + "%");
}
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="percentage"></p>
问题是因为 for
循环在几分之一秒内运行,与 setInterval 无关。
要解决此问题,您可以更改逻辑以使用递归,然后将每次迭代延迟 1 秒,如下所示:
function updatePercentage(p) {
p = p || 0;
$(".percentage").text(p + "%");
if (p < 100) {
setTimeout(function() {
updatePercentage(++p);
}, 1000);
}
}
updatePercentage();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="percentage"></p>