1

我正在尝试在 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. 即使它应该只循环一次,循环也不会结束。

我知道我犯了一个愚蠢的错误,但就是看不到它。

4

2 回答 2

1

1) 请按如下所述解决问题 2,然后重新进行测试... :-)

2)循环没有结束的原因是你没有增加循环变量i......

for (i = oldVal; i <= newVal; ld) {

应该是:

for (i = oldVal; i <= newVal; i++) {
于 2015-01-16T10:48:43.063 回答
1

您需要知道是要增加还是减少 for 循环中的迭代器。然后,您需要这样做。所以,像:

if (newVal - oldVal >= 0) {
   for (i = oldVal; i <= newVal; i++) {
        ...
   }
} else { 
     for (i = oldVal; i >= newVal; i--) {
        ...
      }
 };

无需乱用“ld”。

于 2015-01-16T10:51:50.383 回答