我有一个非常简单的代码来生成一个表。
然而,当我添加了3行if,它变得非常慢。有人知道为什么吗?
代码:
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};如果我移除侵权线,效果会很好。到底怎么回事?
发布于 2014-10-21 09:58:53
关于您目前的情况,有两个问题:
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语句的花括号后面加上分号是不必要的,所以我也删除了它们。
发布于 2014-10-21 09:59:28
原因是因为在循环中,您将j=3设置为永久。我很惊讶这不会使浏览器完全崩溃。
使用相等运算符==或严格相等运算符===
https://stackoverflow.com/questions/26483855
复制相似问题