javascript for 循环未结束
javascript for loop not ending
我正在尝试在 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"
有两个问题:
- IF ELSE 在控制台中显示了四种可能结果中的三种,而不是我预期的结果。
- 循环没有结束,即使它应该只循环一次。
我知道我犯了一个愚蠢的错误,但就是看不出来。
1) 请按如下所述解决问题 2,然后重新进行测试...:-)
2) 循环没有结束的原因是你没有增加循环变量i
...
for (i = oldVal; i <= newVal; ld) {
大概应该是:
for (i = oldVal; i <= newVal; i++) {
您需要知道是要在 for 循环中递增还是递减迭代器。然后,你需要这样做。所以,像这样:
if (newVal - oldVal >= 0) {
for (i = oldVal; i <= newVal; i++) {
...
}
} else {
for (i = oldVal; i >= newVal; i--) {
...
}
};
不用纠结"ld"。
我正在尝试在 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"
有两个问题:
- IF ELSE 在控制台中显示了四种可能结果中的三种,而不是我预期的结果。
- 循环没有结束,即使它应该只循环一次。
我知道我犯了一个愚蠢的错误,但就是看不出来。
1) 请按如下所述解决问题 2,然后重新进行测试...:-)
2) 循环没有结束的原因是你没有增加循环变量i
...
for (i = oldVal; i <= newVal; ld) {
大概应该是:
for (i = oldVal; i <= newVal; i++) {
您需要知道是要在 for 循环中递增还是递减迭代器。然后,你需要这样做。所以,像这样:
if (newVal - oldVal >= 0) {
for (i = oldVal; i <= newVal; i++) {
...
}
} else {
for (i = oldVal; i >= newVal; i--) {
...
}
};
不用纠结"ld"。