var str;
var displayedNum;
for (i in imgURLArray){
str = "<li photonum="+i+">" + "<a>"+ (1+i) + "</a>" + "</li>";
$("ul.selection-list").append(str);
}
Run Code Online (Sandbox Code Playgroud)
我需要在一个循环中执行此操作,但是发生的是它打印出“ 11”而不是“ 2”,因为它在加法之前会转换为字符串。
如果我尝试在字符串之外进行加法并将其存储在变量中,也会遇到同样的问题,它仍然会转换为字符串,而不是进行加法。
Number(1 + 1)仍会先转换为字符串,然后再将其转换为数字,因此结果为11。
使用括号:
var str = "foobar" + (1+i) + "other stuff";
Run Code Online (Sandbox Code Playgroud)
如果我尝试在字符串之外进行加法并将其存储在变量中,也会遇到同样的问题,它仍然会转换为字符串,而不是进行加法。
它不应该。我的猜测是您在那里也做错了。
更新:似乎您正在转换i为未发布代码中某个地方的字符串。
更新2: 不要for..in用来遍历数组。for如果它确实是一个数组,请使用普通循环:
for(var i = 0, l = imgURLArray.length; i < l; i++)
Run Code Online (Sandbox Code Playgroud)
但是,如果它是一个对象:
for...in将始终设置i为字符串(因为它遍历对象的属性,这些属性并不总是整数)。这意味着您必须进行转换i 才能进行任何添加:
... + (1 + (+i)) + ...
Run Code Online (Sandbox Code Playgroud)
更新3:
您不必总是使用这样的“显式” for循环。例如,您可以以相反的顺序遍历数组,从而使头部更短:
for (var i = imgURLArray.length; i--; ) {
str = "<li photonum="+i+">" + "<a>"+ (1+i) + "</a>" + "</li>";
$("ul.selection-list").prepend(str);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |