如何在javascript中增加和减少变量直到100,当达到100时,它应该开始减少。
因此,accuracyBarValue应该从0开始,增加到100,当达到100时,它应该变为0,然后重复过程。
以10为间隔。
我在一个非常简单的JS游戏中使用它,这个值用于增加和减少PowerBar。
提前致谢。
答案 0 :(得分:11)
以下是对此的另一种看法:
var up = true;
var value = 0;
var increment = 10;
var ceiling = 100;
function PerformCalc() {
if (up == true && value <= ceiling) {
value += increment
if (value == ceiling) {
up = false;
}
} else {
up = false
value -= increment;
if (value == 0) {
up = true;
}
}
document.getElementById('counter').innerHTML = 'Value: ' + value + '<br />';
}
setInterval(PerformCalc, 1000);
<div id="counter"></div>
答案 1 :(得分:4)
for (var i=0;i<100;i++)
{
document.write("The number is " + i);
document.write("<br />");
}
while (i>0)
{
i -= 10;
document.write("The number is " + i);
document.write("<br />");
}
您可以对其进行测试和修改here。
答案 2 :(得分:1)
另一种允许您指定持续时间和帧速率的方法。对动画和一段时间内发生的事情非常有用。
<h2>Increment Value over a Duration with a given framerate</h2>
Value: <span id="value">0</span>
var valueElement = document.getElementById('value');
var start = 0;
var end = 100;
var duration = 10000; // In milliseconds (divide by 1000 to get seconds).
var framerate = 50; // In milliseconds (divide by 1000 to get seconds).
var toAdd = ( ( end - start ) * framerate ) / duration;
var interval = setInterval(function() {
var currentValue = parseFloat(valueElement.innerHTML);
if (currentValue >= end) {
clearInterval(interval);
return;
}
valueElement.innerHTML = (!isNaN(currentValue) == true ? currentValue + toAdd : toAdd);
}, framerate);
https://jsfiddle.net/joshuapinter/8uasm7ko/
我想显示增量值,但您也可以轻松将其包装到通用函数中。
答案 3 :(得分:0)
var i = 0;
while( i < 100 )
{
i++;
}
while( i > -1 )
{
i--;
}
显然,你也可以在while
循环中执行其他代码。
答案 4 :(得分:0)
代码
let i = 100;
setInterval(() => {
console.log(Math.abs((i+=10)%200 - 100))
}, 1000);
解构
i+=10
→i
每次滴答地无限增加10点%100
→取两倍于最大值的模(除以10 % 6 = 4
之后的除数)- 100
→删除范围(因此数字将始终在100和-100之间,否则将在0和6之间)Math.abs()
→删除-(确保数字从0到100并返回)可视化的步骤
i ++
∞ .
.
.
/
/
/
/
0
(i + = 10)%200
200
/ / / .
/ / / .
/ / / .
/ / / /
/ / / /
0
i ++%200-100
100
\ /\ /\
\ / \ / \
0 \ / \ / .
\ / \ / .
\/ \/ .
-100
Math.abs(i ++%200-100)
100
\ /\ /.
\ / \ / .
\/ \/ .
0
实施示例
const max = 10;
let i = max;
const $body = document.querySelector('body');
setInterval(() => {
const val = Math.abs(i++%(max * 2) - max);
const $el = document.createElement('i');
$el.style = `--i: ${i}; --val: ${val}`;
$body.appendChild($el);
window.scrollTo(window.innerWidth, 0);
console.log(val);
}, 200);
i {
--i: 0;
--val: 0;
--size: 10px;
position: absolute;
background: black;
width: var(--size);
height: var(--size);
top: var(--size);
left: calc(-10 * var(--size));
transform: translate(
calc(var(--i) * var(--size)),
calc(var(--val) * var(--size))
)
}
替代方法(基于浮动)
Math.acos(Math.cos(i * Math.PI)) / Math.PI;
或
Math.abs(i - Math.floor(i) - .5);
i
是float
-0
之间的Infinity
。结果也是float
,也需要乘以最大和四舍五入(目标值)。