为什么当我使用它:(假设i = 1)
divID = "question-" + i+1;
Run Code Online (Sandbox Code Playgroud)
我得到问题11而不是问题2?
Joa*_*uer 72
请改用:
var divID = "question-" + (i+1)
Run Code Online (Sandbox Code Playgroud)
这是一个相当普遍的问题,并不仅仅发生在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".Ser*_*eim 34
你也可以用这个
divID = "question-" + (i*1+1);
Run Code Online (Sandbox Code Playgroud)
确保i转换为整数.
ede*_*tes 18
仅限使用:
divID = "question-" + parseInt(i) + 1;
Run Code Online (Sandbox Code Playgroud)
当"n"来自html输入字段或声明为字符串时,您需要使用显式转换.
var n = "1"; //type is string
var frstCol = 5;
lstCol = frstCol + parseInt(n);
Run Code Online (Sandbox Code Playgroud)
如果"n"是整数,则不需要转换.
n = 1; //type is int
var frstCol = 5, lstCol = frstCol + n;
Run Code Online (Sandbox Code Playgroud)
由于您将数字连接到字符串,因此整个事物被视为字符串.如果要将数字组合在一起,则需要单独执行此操作并将其分配给var并使用该var,如下所示:
i = i + 1;
divID = "question-" + i;
Run Code Online (Sandbox Code Playgroud)
或者您需要指定数字加法,如下所示:
divID = "question-" + Number(i+1);
Run Code Online (Sandbox Code Playgroud)
编辑
我应该在很久以前添加这个,但根据评论,这也有效:
divID = "question-" + (i+1);
Run Code Online (Sandbox Code Playgroud)