为什么当我使用这个时:(假设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