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"

2 つの問題があります。

  1. IF ELSE は、予想していた結果ではなく、4 つの可能な結果のうちの 3 つをコンソールに表示します。
  2. ループが 1 回しかないはずなのに、ループが終了しません。

私は愚かな間違いを犯したことを知っていますが、それを見ることができません。

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 に答える