在我看来,这个JavaScript应该可行,但它不起作用!循环永远不会运行(它完全被跳过)。
FYI totalPages = 15
for (var i = 1; i >= totalPages; i++) {
pagingOptions += '<option value="' + i + '">' + i + '</option> ';
}
如果我这样更改它,它可以工作:
for (var i = 1; i < totalPages; i++) {
pagingOptions += '<option value="' + i + '">' + i + '</option> ';
}
有什么问题?如果比较是“i&lt; totalPages”,JavaScript将只运行循环?为什么会这样呢?
答案 0 :(得分:4)
for
循环的语义:
for (expression1; expression2; expression3) {
// ...
}
AFTER: // statements
是:
expression1
expression2
并检查它是否为truthy
。如果没有,请跳过后续代码(此处为“AFTER”)for
语句expression3
因此,当循环体的迭代应该继续时,中间表达式应该评估为true
。只要它是false
- 即使它是第一次尝试的false
- 循环结束。
另一种思考方式就是:
expression1;
while (expression2) {
// statements
expression3;
}
答案 1 :(得分:0)
我认为你的错误大于/小于此:
for (var i = 1; i <= totalPages; i++) {
pagingOptions += '<option value="' + i + '">' + i + '</option> ';
}
在我看来,这应该有效(对于给定的工作定义,因为我们不知道您是否希望i
小于,或小于或等于totalPages
)。