javascript for循环没有结束

时间:2015-01-16 10:39:09

标签: javascript for-loop nested-if

我正在尝试使用变量在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"

有两个问题:

  1. IF ELSE在控制​​台中显示四个可能的结果中的三个而不是我期望的结果。
  2. 即使它只应循环一次,循环也不会结束。
  3. 我知道我犯了一个愚蠢的错误,但却看不到它。

2 个答案:

答案 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;。