如何根据计数器值获取进度条以更改'speed'或setInterval?因此,例如,如果条形小于40 - 执行此操作,或者小于60执行此操作,依此类推。
我试图在达到40之后放慢进度条,然后进一步降低60%。
var counter = 0;
var timer = setInterval(function () {
if (counter <= '40') {
progressLoading.val(counter);
counter = counter += 1;
} else {
clearInterval(timer);
}
}, 20);
答案 0 :(得分:1)
在控制台中运行以下命令,看看这是否是您想要的效果。
var counter = 0;
var factor = 1;
var damping = 80; // Increase this to slow down increment.
// This is the minimum value of 'factor'. Increasing this will speed up the function
var minVal = 0.1;
var timer = setInterval(function () {
console.log(Math.ceil(counter)); // Call your function here.
counter = counter + factor;
if (counter > 40 && counter < 100) {
factor = Math.max((100 - counter)/damping, minVal)
} else if (counter > 100) {
clearInterval(timer);
}
}, 20);
最初,counter
正在增加factor = 1
。在40
之后,factor
逐渐减少。 factor
的最小值不能小于minVal
。
显示更多违规行为的进展 -
var counter = 0;
var factor = 1;
var timer = setInterval(function () {
console.log(Math.ceil(counter)); // Call your function here.
counter = counter + factor;
if (counter > 40 && counter < 100) {
factor = Math.max(Math.abs(Math.sin(100 - counter)), 0.1)
} else if (counter > 100) {
clearInterval(timer);
}
}, 20);
Math.sin
函数始终返回-1
到+1
之间的数字。我们只需要积极的,所以我们将其传递给Math.abs
。这使得factor
始终位于0
和1
之间。
此外,数字可能太小,因此因子值可能无关紧要。为确保不会发生这种情况,我们将最低值设置为0.1
,由Math.max
进行检查。
显示不规则和降低速度的进展 -
var counter = 0;
var factor = 1;
var maxVal = 1; // Maximum value of `factor` after crossing 40
var minVal = 0.1; // Minimum value of `maxVal`
var damping = 60; // damping for `maxVal`
var timer = setInterval(function () {
console.log(Math.ceil(counter)); // Call your function here.
counter = counter + factor;
if (counter > 40 && counter < 100) {
maxVal = Math.max((100 - counter)/damping, minVal)
factor = Math.min(Math.max(Math.abs(Math.sin(100 - counter)), 0.1), maxVal);
} else if (counter > 100) {
clearInterval(timer);
}
}, 20);
这一个都是以上两者的组合。在第二个中,factor
可以是0
和1
之间的任何内容。上述功能可确保factor
介于0
和maxVal
之间,并且我们使用使用的阻尼函数将maxVal
从1
减少到0.1
在1。