なぜこれを使用する場合:(i = 1
と仮定)
divID = "question-" + i+1;
question-11ではなくquestion-2?
代わりにこれを使用してください:
var divID = "question-" + (i+1)
これはかなり一般的な問題であり、JavaScriptで発生するだけではありません。 +
は両方連結と加算を表すことができるという考え方です。
+演算子は左から右に処理されるため、コードの決定は次のようになります。
"question-" + i
:"question-"
は文字列なので、連結を行い、結果として"question-1"
になります"question-1" + 1
:"queston-1"
は文字列なので、連結を行い、結果として"question-11"
になります。"question-" + (i+1)
とは異なります:
(i+1)
は括弧内にあるため、最初の+
を適用する前にその値を計算する必要があります:i
は数値、1
は数値なので、追加を行い、結果として2
になります"question-" + 2
:"question-"
は文字列なので、連結を行い、結果として"question-2"
になります。これも使用できます
divID = "question-" + (i*1+1);
i
が整数に変換されるようにします。
使用のみ:
divID = "question-" + parseInt(i) + 1;
「n」がhtml入力フィールドから取得されるか、文字列として宣言される場合、明示的な変換を使用する必要があります。
var n = "1"; //type is string
var frstCol = 5;
lstCol = frstCol + parseInt(n);
「n」が整数の場合、変換の必要はありません。
n = 1; //type is int
var frstCol = 5, lstCol = frstCol + n;
文字列に数字を連結しているため、全体が文字列として扱われます。数字を一緒に追加したい場合は、次のように、個別に実行して変数に割り当て、その変数を使用する必要があります。
i = i + 1;
divID = "question-" + i;
または、次のように番号の追加を指定する必要があります。
divID = "question-" + Number(i+1);
編集
私はこれをずっと前に追加すべきでしたが、コメントに基づいて、これも同様に機能します:
divID = "question-" + (i+1);
divID = "question-" + parseInt(i+1,10);
ここで確認してください 、JSFiddleです
Joachim Sauerの答え は、このようなシナリオで機能します。しかし、括弧を追加しても役に立たない場合があります。
たとえば、「入力要素の値と整数の合計」を引数として関数に渡します。
arg1 = $("#elemId").val(); // value is treated as string
arg2 = 1;
someFuntion(arg1 + arg2); // and so the values are merged here
someFuntion((arg1 + arg2)); // and here
Number()
を使用して動作させることができます
arg1 = Number($("#elemId").val());
arg2 = 1;
someFuntion(arg1 + arg2);
または
arg1 = $("#elemId").val();
arg2 = 1;
someFuntion(Number(arg1) + arg2);
var divID = "question-" + (parseInt(i)+1);
この+
演算子を使用してconcat
として動作するため、11が表示されます。
括弧を追加する
divID = "question-" + (i+1);
数字を囲む中括弧を使用すると、連結ではなく加算として扱われます。
divID = "question-" + (i+1)
これが得られる理由は、演算子の優先順位と、+
が文字列の連結と数値の加算の両方に使用されるという事実です。
あなたの場合、「question-」とi
の連結が最初に行われ、文字列「question = 1」が与えられます。次に、「1」との別の文字列連結により「question-11」が得られます。
単に通訳者にどのような順序で希望するかについてのヒントを与えるだけです。
divID = "question-" + (i+1);
別の代替手段を使用することもできます:
divID = "question-" + i- -1;
マイナスの減算は加算と同じであり、マイナスを連結に使用することはできません