为什么当我使用这个时:(假设i = 1)
divID = "question-" + i+1;
我得到问题 11而不是问题 2?
为什么当我使用这个时:(假设i = 1)
divID = "question-" + i+1;
我得到问题 11而不是问题 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;
由于您将数字连接到字符串上,因此整个内容都被视为字符串。当您想将数字加在一起时,您需要单独进行并将其分配给一个 var 并使用该 var,如下所示:
i = i + 1;
divID = "question-" + i;
或者您需要像这样指定数字加法:
divID = "question-" + Number(i+1);
编辑
我早就应该添加这个,但根据评论,这也有效:
divID = "question-" + (i+1);
divID = "question-" + parseInt(i+1,10);
在这里检查,这是一个 JSFiddle