我有一个非常简单的代码来生成一个表。
然而,当我添加3行时,它变得非常慢。 任何人都有任何想法?
代码:
for (var i=0; i<=noofRows; i++){
var rg = genguid();
for (var j=1; j<=noofbackuprows; j++){
to+='<tr>';
to+='<td>' + prefix + rg + '-' + j;
to+='</td>';
if (j<3){var vval = 10000};
if (j=3){var vval = 5000};
if (j>4){var vval = 2500};
to+='<td>' + vval + '</td>';
to+='</tr>';
}
}
侵权行:
if (j<3){var vval = 10000};
if (j=3){var vval = 5000};
if (j>4){var vval = 2500};
如果我删除侵权行,它的效果很好。 发生了什么事?
答案 0 :(得分:3)
您目前拥有的两个问题:
if (j<3){var vval = 10000};
if (j=3){var vval = 5000};
if (j>4){var vval = 2500};
首先,j = 3
将值3
分配给j
。它不会检查j
是否等于3
。要解决此问题,请将其更改为==
或===
:
if (j === 3) { var vval = 5000; }
这就是为什么你的应用程序变慢了,因为你的for
循环在一个循环中陷入困境,因为某个点j
总是等于3
。
其次,您应该使用else if
,否则即使第一个语句符合要求,也会检查所有三个if
语句:
if (j < 3) { var vval = 10000 }
else if (j === 3) { var vval = 5000 }
else if (j > 4) { var vval = 2500 }
另请注意,在if
语句的大括号后面加分号是不必要的,所以我也删除了这些分号。
答案 1 :(得分:1)
原因是因为在循环中你永远设置j=3
。我很惊讶这不会完全破坏浏览器。
使用相等运算符==
或严格相等运算符===