我正在尝试使用变量在javascript中执行for循环来指定增量。 以下函数使用DIV的先前值(oldVal)和已更改为(newVal)的值来更改另一个DIV中显示的总数(curtot)。
function spinctrltotaling(sender, newVal) {
var curtot = Number(document.getElementById("totaling").innerHTML);
console.log(curtot);
var transtot = 0;
var ld = "";
var oldVal = sender.GetOldValue();
console.log(oldVal);
if (newVal - oldVal >= 0) {
ld = "i=i+1";
} else {
ld = "i=i-1";
}
;
console.log(ld);
for (i = oldVal; i <= newVal; ld) {
console.log(i);
if (i <= 0 & ld == "i=i+1") {
transtot = transtot - (i + 1);
console.log("i <= 0");
} else if (i < 0 & ld == "i=i+1") {
transtot = transtot + i;
console.log("i < 0");
} else if (i >= 0 & ld == "i=i+1") {
transtot = transtot - (i - 1);
console.log("i >= 0");
} else {
transtot = transtot + i;
console.log("else");
}
}
;
if (curtot - transtot < 0) {
sender.SetCurrentValue = oldVal;
} else {
document.getElementById("totaling").innerHTML = transtot;
document.getElementById("debuging").innerHTML = "curtot=" + curtot
+ " oldVal=" + oldVal + " newVal=" + newVal
+ " transtot=" + transtot;
}
;
}
控制台结果:
0
0
"i=i+1"
0
"i <= 0"
1
"i >= 0"
有两个问题:
我知道我犯了一个愚蠢的错误,但却看不到它。
答案 0 :(得分:1)
1)请解决下面所述的问题2,然后重新制作你的测试...: - )
2)循环没有结束的原因是你不增加循环变量i
......
for (i = oldVal; i <= newVal; ld) {
应该是:
for (i = oldVal; i <= newVal; i++) {
答案 1 :(得分:1)
您需要知道是否要在for循环中递增或递减迭代器。然后,你需要这样做。所以,像:
if (newVal - oldVal >= 0) {
for (i = oldVal; i <= newVal; i++) {
...
}
} else {
for (i = oldVal; i >= newVal; i--) {
...
}
};
不需要乱用&#34; ld&#34;。