私は自分の関数にこの下のループを持っています
x が <10 の場合はループしますが、10 より大きい場合は y < x の条件が満たされていても失敗します
function insert(x,y) {
for (var shift = y; shift < x; shift++) {
//get into loop for insert (9,2) but not for insert(10,2)
}
}
これは実際の関数です。rapheal.js を使用して挿入前のシナリオを視覚化しようとしていますが、insertBeforeTo(9,2) で機能しますが、insertBeforeTo(10,2) を試してもループに入りません。
function insertBeforeTo(whichElementI, insertBeforeI) {
var twhichElement = blocks[whichElementI];
blocks[whichElementI].animate({ x: blocks[insertBeforeI].attr('x') }, 1000, ">");
var shiftplusone = insertBeforeI;
for (var shift = insertBeforeI; shift < whichElementI; shift++) {
++shiftplusone;
blocks[shift].animate({ x: blocks[shiftplusone].attr('x') }, 1000, ">");// check value actually changes
}
}
反対票を投じる: 説明してもよろしいですか?
問題が見つかりました: デバッグ中に、「 」に whichElementI と insertBeforeI の値が表示されます。だから私はそれを文字列として受け取り、nnnnn と paxdiablo が正しく指摘したように、int ではなく文字列として受け取ると仮定します。
そこで、+whichElementI、+insertBeforeI などの単項プラス演算子を使用して問題を解決しました。
ありがとう